我正在學習Qt,並試圖用QPainter爲我的程序繪製一個簡單的顯示畫面。QPainter重繪窗口獲得/失去焦點
我畫了一次靜態元素(框架等),之後只更新動態元素。
一切工作正常,除了當窗口失去焦點。一旦發生這種情況,整個區域就會被清除(動態元素會像以前一樣不斷繪製)。
可以防止這種行爲嗎?如果不是,我該如何確定窗口是否失去了焦點?
我正在學習Qt,並試圖用QPainter爲我的程序繪製一個簡單的顯示畫面。QPainter重繪窗口獲得/失去焦點
我畫了一次靜態元素(框架等),之後只更新動態元素。
一切工作正常,除了當窗口失去焦點。一旦發生這種情況,整個區域就會被清除(動態元素會像以前一樣不斷繪製)。
可以防止這種行爲嗎?如果不是,我該如何確定窗口是否失去了焦點?
雖然我沒有找到爲什麼屏幕被重新粉刷,重點可以通過使用
eventFilter(QObject *, QEvent *event) {
if (event->type() == QEvent::ActivationChange){}
}
和油漆的功能可以從這裏被稱爲被觸發。儘管必須添加輕微的延遲,因爲觸發器通常會在窗口失焦之前觸發(因此仍會清除重新繪製)。
當您的小部件被發現時,將會調用paintEvent
成員。傳入的事件有一個region()
成員,該成員告訴您應該重繪部件。如果需要,您可以使用它來重新繪製靜態部分。
那麼我使用的區域,這就是爲什麼只有活動部分重繪。我想知道爲什麼在改變焦點的時候整個區域都被清除了,以及如果不可能防止清除,如何觸發改變以進行完全重新繪製。 – proarunas