首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT重绘/重绘/更新/做一些事情

QT重绘/重绘/更新/做一些事情
EN

Stack Overflow用户
提问于 2010-01-13 06:23:51
回答 4查看 88.2K关注 0票数 28

我是QT新手。我知道你可以强制刷新显示,但我已经想尽办法想办法了。这是我特别想要做的事情。

我按下一个按钮(onClick signal event),该按钮运行更改显示器上的图像(QLabel)的代码,等待输入,然后更改新图像(不同的QLabel)。我已经尝试了所有方法,直到onclick信号事件代码完成,显示才会刷新。现在,我不是在等待用户输入,而是使用usleep(~500ms)进行测试。

据我所知,QT是事件驱动的,这意味着我基本上创建了一堆事件,放在一个que中,并在(onClick信号事件)返回到(主循环)/(事件处理程序)时执行。我不想等到函数完成,如果我必须完全基于事件来完成这个例程,这将使编程变得非常痛苦。

如何强制QLabel像素图刷新。我什么都试过了。下面是我在onClick信号事件处理程序中尝试过的所有代码。(upButton是作为像素图的QLabel的名称)

代码语言:javascript
复制
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);

如你所见,在这一点上我只是在黑暗中拍摄。我试着查看示例代码并做完所有的功课,但是我迷路了。感谢任何帮助、建议和/或示例代码。

EN

Stack Overflow用户

发布于 2015-02-02 12:08:10

我注意到,有时当你有多个分层的小部件,或者小部件内部的小部件时,调用它们的repaint()事件会很有帮助。

例如

代码语言:javascript
复制
this->repaint();
this->parentWidget()->repaint();
this->parentWidget()->parentWidget()->repaint();

这比将任何处理推送到另一个线程或创建额外的事件处理程序要容易得多。

票数 10
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2052907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档