我是QT新手。我知道你可以强制刷新显示,但我已经想尽办法想办法了。这是我特别想要做的事情。
我按下一个按钮(onClick signal event),该按钮运行更改显示器上的图像(QLabel)的代码,等待输入,然后更改新图像(不同的QLabel)。我已经尝试了所有方法,直到onclick信号事件代码完成,显示才会刷新。现在,我不是在等待用户输入,而是使用usleep(~500ms)进行测试。
据我所知,QT是事件驱动的,这意味着我基本上创建了一堆事件,放在一个que中,并在(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);如你所见,在这一点上我只是在黑暗中拍摄。我试着查看示例代码并做完所有的功课,但是我迷路了。感谢任何帮助、建议和/或示例代码。
发布于 2015-02-02 12:08:10
我注意到,有时当你有多个分层的小部件,或者小部件内部的小部件时,调用它们的repaint()事件会很有帮助。
例如
this->repaint();
this->parentWidget()->repaint();
this->parentWidget()->parentWidget()->repaint();这比将任何处理推送到另一个线程或创建额外的事件处理程序要容易得多。
https://stackoverflow.com/questions/2052907
复制相似问题