qt顯示機制(五)
blackdream2
繪圖的底層操作
lcd螢幕上的每個點都與顯示緩衝區中的資料有特定的關係,對16位色的顯示緩衝區,每兩個位元組對應lcd上的乙個畫素,因此我們只要修改緩衝區某兩個位址上的資料就可以改變lcd上這個點的色彩,如果我們能夠得到這個顯示緩衝區的位址,應用程式編寫者就可以拋開驅動程式那些抽象的介面,直接對顯示緩衝區操作。linux上有這種專門的驅動支援就是framebuffer驅動程式,framebuffer也就是幀緩衝,驅動程式建立乙個緩衝區用做顯示buffer。應用程式開發人員可以通過mmap將framebuffer裝置重新對映,這樣我們對lcd的操作就可以象操作乙個二位陣列一樣方便。qt正是這麼做的。
qwidget繼承了qpaintdevice,通過graphicscontext介面,我們可以方便地得到這個窗體的裝置上下文。這一過程是如何實現的呢?
qgfx * qwidget::graphicscontext(bool clip_children) const
qqt_get_screen( int display_id, const char *spec )
來獲得相應的驅動程式。建立驅動程式後呼叫
qt_screen->connect
將客戶端與framebuffer即幀緩衝對映起來,具體**可以參考
qlinuxfbscreen
。當乙個窗體就收到paintevent事件後就可以建立qpaint物件繪圖,通過裝置上下文獲得的繪圖介面實際上都是在對幀緩衝進行操作。 如果驅動程式不支援雙緩衝操作的話,繪圖的結果將直接顯示在lcd上。
e-mail:[email protected]
QT顯示機制 一
qt顯示機制 一 blackdream2 qt顯示機制 albertchen 了解qt顯示機制,最重要的就是要了解qt是如何管理窗體的顯示區域的,這裡有個重要的類 qregion,在qt中可以通過qregion定義乙個窗體的顯示區域,也可以通過qregion定義窗體的可修改區域,比如在qpainte...
QT的顯示機制
1 qt圖形框架資料01 2 了解qt顯示機制,最重要的就是要了解qt是如何管理窗體的顯示區域的,這裡有個重要的類 qregion,在qt中可以通過qregion定義乙個窗體的顯示區域,也可以通過qregion定義窗體的可修改區域,比如在qpainter 中通過qpainter setcliprec...
qt 事件機制
什麼是自發事件?哪些型別的事件可以被propagated 或compressed?posting and sending 事件之間有何不同?什麼時候應該呼叫 accept 或是ignore 如果這些問題你還不是很了解,那麼繼續看下去。事件起源 定製事件型別 到現在為至,我們所說的內容不僅僅適用於ke...