QT对QLabel中的setText使用的疑问。
答案:2 悬赏:80 手机版
解决时间 2021-11-17 19:24
- 提问者网友:兔牙战士
- 2021-11-17 01:26
QT对QLabel中的setText使用的疑问。
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-11-17 02:05
因为setText()不会立即调用paintEvent进行绘图。程序会等你退出循环后才有机会进行绘图。所以你看到的是最后一次读回来的值。
解决的办法是:
label->setText()后,调用label->repaint()立即重绘。
或者
既然你在循环里每次都要sleep(1),为什么不加一个Timer,然后在Timer超时的时候去做这些事?这比在for循环里sleep要好很多。因为在for循环里sleep,程序一直block在你这个for循环里出不来,响应不了其他事件。不太好。
解决的办法是:
label->setText()后,调用label->repaint()立即重绘。
或者
既然你在循环里每次都要sleep(1),为什么不加一个Timer,然后在Timer超时的时候去做这些事?这比在for循环里sleep要好很多。因为在for循环里sleep,程序一直block在你这个for循环里出不来,响应不了其他事件。不太好。
全部回答
- 1楼网友:鱼忧
- 2021-11-17 03:29
肯定是每次都运行啊,你的循环里又没分支跳转语句控制这里的执行流。
之所以不显示之前的,猜测原因可能如下:
1. 每次采集的数值都一样。。。
2. 采集速度过快,界面来不及刷新
最简单的方式就是设断点调试看下,如果确实20次中有不同的res值,很可能就是刷新过快的缘故了
sleep同样会阻塞主线程的
之所以不显示之前的,猜测原因可能如下:
1. 每次采集的数值都一样。。。
2. 采集速度过快,界面来不及刷新
最简单的方式就是设断点调试看下,如果确实20次中有不同的res值,很可能就是刷新过快的缘故了
sleep同样会阻塞主线程的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯