我是QT的新手。我知道你可以強制顯示刷新,但是我已經把所有的頭髮都試圖弄清楚了。這是我特別想要做的。QT重繪/重繪/更新/做點什麼
我按下一個按鈕(onClick信號事件),該按鈕運行在顯示器上更改圖像(QLabel)的代碼,等待輸入,然後通過更改新圖像(不同的QLabel)繼續進行。我試過了所有的東西,直到onclick信號事件代碼完成後,顯示纔會刷新。現在,我不等待用戶輸入,我正在使用usleep(〜500 ms)進行測試。我從中讀到,QT是事件驅動的,意思是我基本上創建了一堆事件,將其放入隊列中,並在(onClick信號事件)返回到(主循環)/(事件處理程序)。我不想等到函數完成後,如果我必須完全基於事件完成這個例程,那麼編程就會非常痛苦。
如何強制刷新QLabel像素圖。我已經嘗試了一切。以下是我在我的onClick信號事件處理程序中嘗試過的所有代碼。 (upButton是這是一個像素圖的QLabel的名稱)
update();
repaint();
ui->upButton->setUpdatesEnabled(TRUE);
update();
repaint();
QPaintEvent paintevent(ui->upButton->childrenRegion());
QPaintEvent * test = &paintevent;
paintEvent(test);
this->changeEvent(test);
ui->upButton->update();
ui->upButton->repaint();
ui->upButton->repaint(ui->upButton->childrenRegion());
repaint();
QApplication::sendPostedEvents();
this->parentWidget()->update();
usleep(100000);
正如你所看到的,我只是在黑暗中在這一點上拍攝。我試圖看看示例代碼,完成我的所有功課,但我迷路了。欣賞任何幫助,建議和/或示例代碼。
在事件驅動的GUI系統中,您通常不會在回調中「等待輸入」。等待輸入的狀態意味着你處於事件循環中。所以我很困惑,爲什麼你會用什麼東西來休眠 - 你打算什麼時候打電話來處理用戶輸入?不要擔心事件是痛苦的......信號和插槽不會咬(通常)。 – HostileFork 2010-01-12 22:55:14