2014-09-05 64 views
8

我在Windows中使用Qt5。我只是在Qt Creator中創建了一個簡單的小部件項目。我有一個QMainWindow裏面有一個文本編輯部件。我啓用了垂直佈局,因此文本編輯消耗了主窗口內部的全部大小(這正是我想要的,我正在嘗試創建一個小型的記事本應用程序)。在Windows上奇怪的延遲繪畫與Qt5

正如我在預覽中拖動主窗口的右下角(點擊我的綠色三角形左下方)我看到的子控件的大小調整稍有延遲。它不會在同一個渲染框架上與父窗口重新調整大小(看起來像是後面的1-2渲染框架)。

我記得幾年前,在老派的Win32 API中處理渲染滯後像這樣。我記得我不得不在緩衝區位圖上進行雙緩衝渲染,以修復它(或者沿着這些線條進行了很長時間)。

有沒有辦法在Qt中修復這個「渲染延遲」?我只能想象這是特定於Windows,可能不會影響其他平臺,雖然我還沒有測試過。如果我需要提供更多信息,請告訴我。

+3

我不知道答案,但我建議編譯並運行在$ QTDIR/qtbase /例子/部件/富文本/文本編輯的「文字編輯」的示例應用程序,看看它是否也表現出同樣的問題。如果是這樣,它可能只是Qt在Windows下實現的一種工件;如果沒有,請參閱textedit示例應用程序與您的應用程序做的不同。 (FWIW在使用Qt 5.3.1在MacOS/X下調整大小時沒有看到任何延遲) – 2014-09-05 06:40:25

+1

感謝Jeremy的建議。我跑了樣本,我確實仍然看到這個問題。 – 2014-09-06 01:51:47

+1

請問您可以包含一些代碼嗎?所以我可以嘗試它,也許可以幫助你。 – 2015-05-21 21:45:43

回答

4

這可能是一個Windows問題,而不是Qt的。窗口越重,你的窗口就越顯着。


我剛纔調查了同一個問題。我們有一個相當GUI的窗口,有幾個小部件顯示數據的2D和3D視圖。使用右下角調整窗口大小會導致重新調整大小 - 重繪恐怖。不幸的是,它看起來像問題不是Qt相關的,而是Windows處理重繪大小窗口的方式。即使在Windows 7上的文件資源管理器中,我也能發現問題。Qt實際上默認情況下使用雙緩衝(如@Bim的評論中所述)。我也嘗試明確觸發Qt的重繪事件。這有所幫助,但沒有解決問題。所以經過許多努力,我們決定與之共存。

+0

只需補充一句:「我們只是決定和它一起生活。」這可能是解決這個問題的唯一理智方式。即使是像VS2015,Outlook,Explorer等微軟產品也顯示出這種行爲,所以MS也「隨它而生」。 – 2017-01-03 10:25:18