Qt刷新UI界面问题

当执行完settext()操作之后,如果后面死循环或者很占用主线程时间的处理,那么界面就不会立刻更新,只会等到逻辑处理完之后才会更新界面,那么有什么办法可以立刻更新界面呢?
第一种:将很占用主线程资源的操作放在另外一个线程中执行,这样就不会影响主线程的界面更新操作
第二种:执行settext()之后直接执行一次qApp->processEvent()这样就能做到立刻更新界面了

需要说下的是更新界面都是等到执行a. exec()之后才能更新,而在a. exec()中实际上执行的也是processEvent()函数

Ui的更新只能是在主线程中更新

虽然更新界面都是等到逻辑执行完以后,执行了a. exec()之后才会更新界面,但是有一个控件比较特殊会立刻更新界面,那就是进度条控件QProcessBar 中的setvalue()函数,这个是会立刻更新界面的,而且如果setvalue()之前有更新其他控件的操作,也是可以立刻更新界面的,估计进度条的setvalue()中也是执行了qApp->processEvent()才能做到立刻更新界面

你可能感兴趣的:(qt,Qt更新UI)