[英]Qt: How to create a scrollable, owner-drawn widget
我需要創建一個可滾動的,所有者繪制的小部件,其行為類似於QPlainTextEdit
並帶有文字QPlainTextEdit
文本,從某種意義上說,高度取決於寬度-隨着內容寬度的減小,內容高度也會增加。
最好的方法是什么? 我當時正在考慮將QWidget-derived
類放在QScrollArea
,但是QPlainTextEdit
是從QScrollArea
派生的,我應該走那條路線嗎?
另外,我只想在paintEvent()
繪制可見區域,否則會很浪費。
現在,我正在檢查QPlainTextEdit
的代碼,但它相當復雜且不易閱讀,因此,如果有人知道在網絡上更簡單的代碼示例,則可以給我一個鏈接,這將大有幫助。
我將發布我想出的解決方案。 它不是最好的,但大多數情況下都有效。
最后,我沒有從QAbstractScrollArea
派生出來,而是將我的窗口小部件嵌入具有垂直布局的QScrollArea
,效果很好。
我實現了resizeEvent()
(我從QPlainTextEdit
實現中看到了這QPlainTextEdit
),每次寬度改變時,我都會重新計算高度,並為此設置小部件的最小高度。 由於布局的工作原理,我設置了最小高度。
void MyWidget::resizeEvent(QResizeEvent *e)
{
// If the widget's width has changed, we recalculate the new height
// of our widget.
if (e->size().width() == e->oldSize().width()) {
return;
}
setMinimumHeight(calculateHeightFromWidth(e->size().width()));
}
對於僅繪制可見區域,請參閱獲取QPainter的可見區域。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.