QT 視窗重繪事件 paintEvent事件

2022-09-24 06:09:13 字數 572 閱讀 9677

1.qwidget * qscrollview::viewport () const

返回滾動檢視中的視口視窗部件,這個視窗部件包含內容視窗部件或者要畫的區域。

2.void qwidget::paintevent ( qpaintevent * ) [虛 保護]

只要視窗部件需要被重繪就被呼叫。每個要顯示輸出的視窗部件必須實現它。這個事件處理器可以在子類中被重新實現來接收繪製事件。 它可以是repaint()或update()的結果。 很多視窗部件在當它們被請求時,它們很簡單地重新繪製整個介面,但是一些視窗部件通過僅僅繪製被請求的區域qpaintevent::region()進 行優化,例如,qlistview和qcanvas就是這樣做的。

qt也可通過把多個繪製事件合併為乙個來加快繪製速度。當update()被呼叫幾次或者視窗系統傳送幾次繪製事件,qt把它們合併為 乙個比較大區域(請參考qregion::unite())的乙個事件中。repaint()不允許這樣優化,所以只要可能我們盡量使用update ()。

當繪製事件發生,更新區域通常被擦除。這裡有一些例外,通過qpaintevent::erased()可以得知這個視窗部件是否被擦除。

MFC的視窗重繪

在重新整理視窗時經常要呼叫重繪函式 mfc提供了三個函式用於視窗重繪 invalidaterect rect invalidate updatewindow 當需要更新或者重繪視窗時,一般系統會發出兩個訊息wm paint 通知客戶區有變化 和wm ncpaint 通知非客戶區有變化 wm nvpa...

VS2010 視窗重繪

孫鑫老師的vc 深入詳解中,第6.5章 本示例程式中再次輸入的文字是在上次輸入的文字之上顯示的,書上的 不能解決這個問題 void cmenu7view onchar uint nchar,uint nrepcnt,uint nflags m strline.empty invalidate els...

視窗重繪一點通

視窗重繪函式心得 在重新整理視窗時經常要呼叫重繪函式 mfc提供了三個函式用於視窗重繪 invalidaterect rect invalidate updatewindow 當需要更新或者重繪視窗時,一般系統會發出兩個訊息wm paint 通知客戶區有變化 和wm ncpaint 通知非客戶區有變...