当前位置: 技术问答>linux和unix
Qt中利用循环实时显示数字的问题
来源: 互联网 发布时间:2016-06-07
本文导语: 小弟初学qt,最近编写了一段程序,要把一些经过处理的数据实时的显示在Qt所做的界面上,数据的处理利用一个for 循环实现,我想每处理完一个数据,然后显示,然后接着循环处理数据,在显示。我在for循环的末尾...
小弟初学qt,最近编写了一段程序,要把一些经过处理的数据实时的显示在Qt所做的界面上,数据的处理利用一个for 循环实现,我想每处理完一个数据,然后显示,然后接着循环处理数据,在显示。我在for循环的末尾发射了信号,调用了改变label文本的slot,而且信号和槽的连接采用Qt::DirectConnection方式,但还是在for循环全部结束后显示最后一个数据。这个需要怎么改啊?????????
|
void QWidget::update () [槽]
更新窗口部件,除非更新已经失效或者窗口部件被隐藏。
这个函数不会导致一个立刻的重新绘制——更正确的是,当Qt回到主事件回路中时,它规划了所要处理的绘制事件。这样允许Qt来优化得到比调用repaint()更快的速度和更少的闪烁。
几次调用update()的结果通常仅仅是一次paintEvent()调用。
Qt通常在paintEvent()调用之前擦除这个窗口部件的区域。仅仅只有在WRepaintNoErase窗口部件标记被设置的时候,窗口部件本身对绘制它所有的像素负有责任。
也可以参考repaint()、paintEvent()、updatesEnabled、erase()和setWFlags()。
for 循环里
调用 update () 刷新一下就行了。
更新窗口部件,除非更新已经失效或者窗口部件被隐藏。
这个函数不会导致一个立刻的重新绘制——更正确的是,当Qt回到主事件回路中时,它规划了所要处理的绘制事件。这样允许Qt来优化得到比调用repaint()更快的速度和更少的闪烁。
几次调用update()的结果通常仅仅是一次paintEvent()调用。
Qt通常在paintEvent()调用之前擦除这个窗口部件的区域。仅仅只有在WRepaintNoErase窗口部件标记被设置的时候,窗口部件本身对绘制它所有的像素负有责任。
也可以参考repaint()、paintEvent()、updatesEnabled、erase()和setWFlags()。
for 循环里
调用 update () 刷新一下就行了。
|
我也是初学,说错了见谅
为什么一定要发信号用槽? 直接在循环结束的时候用个函数updateLabel不可以吗?
为什么一定要发信号用槽? 直接在循环结束的时候用个函数updateLabel不可以吗?
|
发送信号用emit,每次更新就在需要更新的地方update就可以了。