天天看點

qt show hide repaint update paintEvent

qt元件中,show hide控制了一個開關(可能是bool類型的值),這個開關會控制repaint和update是否要發出paintEvent事件。估計内部會調用repaint和update函數。

repaint 和update函數 用于發出paintevent事件。差別有一個描述在這裡

這兩個函數都在内部有内調用

如update在窗體生效(聚焦)和失效(失焦) 或者在窗體resize等操作時會被調用到。

repaint在各種按鍵或者滑鼠按鈕的時候會調用。

paintEvent 一般隻在事件循環中調用,最高不要手動顯示調用paintEvent,可以通過調用repint函數進行。

真正的繪制操作是在paintEvent中,自定義的繪制操作也需要放到這裡面要不然會被沖刷掉。

那麼子窗體的update在什麼地方會出現呢:

現在注意到的有以下幾種情況:

1、主窗體或父窗體突然生效(聚焦)和失效(失焦),也就是變成目前操作視窗與否。可以看到父窗體響應事件後會遞歸的向所有子窗體傳遞該事件

qt show hide repaint update paintEvent

2、父窗體中有進行resize(這個無法斷點到,但是沒有走到repaint中)

3、滑鼠移動到對應的子控件上時(這裡應該是響應了hover事件後導緻的)。

繼續閱讀