原來我QT4程式運行時,在界面上有label和幾個button,label
是用來持續重繪當前時間所用,button點擊其中一個其他的隱藏或者顯示,現在程式完全轉換成QT5,
這兩個功能可以正常使用,但是界面上不進行重繪,如果我通過最小化后再最大化的話,這樣界面上的
控制元件重繪了一次的樣子(正常情況label持續重繪的時間應該動的,但是現在只顯示固定的時間),不知
道有沒有高手遇到過或者知道解決這樣的問題

uj5u.com熱心網友回復:
程式代碼是不是在一個長時間回圈中改變界面顯示?uj5u.com熱心網友回復:
把其他功能暫時關閉,只保留Timer來顯示時間,看看是否正常uj5u.com熱心網友回復:
在程式中我這里面沒有對UI執行緒做什么操作,如果需要回圈使用都是執行緒(還分配的內核使用呢)來搞定的,uj5u.com熱心網友回復:
我按照您說的做了一下相應的操作,發現一個問題;
我先說一下我整個系統包含的部分,整個系統界面包含4個界面,其中第二個界面里面添加了一個QtabWidget控制元件,這個控制元件的目的是為了他我添加其他子界面所用的,現在的問題是如果說我不在第二個界面里面的QtabWidge添加原先的QWidget,而是添加一個空的Qwdiget的話,這樣是沒有問題的,如果我添加的還是原先的QWidget'的話就會出現我提問的這個現象,不明白是怎么回事,原先的Qwidget界面里面只包含了執行緒觸發事件的一個槽函式在持續運行外(只有當我進入該界面時才會重繪界面),我想請問一下大神這個到底是因為什么原因導致的,如果可以我吧代碼給你看一下,為什么QT4可以,而QT5卻不能夠正常運行。
uj5u.com熱心網友回復:
在主表單類中添加這么一句話就可以解決!protected:
//解決QT5界面不重繪的BUG。
virtual void showEvent(QShowEvent *event)
{
this->setAttribute(Qt::WA_Mapped);
QWidget::showEvent(event);
}
我就很納悶,這個東西應該是很多QT4轉QT5時會遇到的問題,怎么就有沒人會呢?
不過本人找到原因自然想要分享一下,至于那些又想學習,有不愿意分享的人,我
只能說你會的東西也不多。
uj5u.com熱心網友回復:
Qt 5的bug在showevent中添加
this->setAttribute(Qt::WA_Mapped);
就能解決
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/9490.html
標籤:工具平臺和程序庫
下一篇:訪問權限沖突
