我有一个基本标签,应该向用户表明程序正在搜索目录几秒钟。所以它就像......
self.label.setText(QString("Searching..."))
# method to search directories goes here
self.label.setText(QString("Search Complete"))
我的问题是标签从不显示“正在搜索...”。执行总是似乎直接跳转到运行扫描目录的方法,然后在扫描目录的方法完成后标签文本设置为“搜索完成”。
如果有人能够解释为什么会这样,或者建议更好的方法来解决问题,我将不胜感激。
非常感谢答案 0 :(得分:21)
您的“搜索目录的方法”阻止了GUI,因此QLabel无法更新文本。您可以使您的搜索例程异步或轻松实现并强制QLabel自行更新:
self.label.setText(QString("Searching..."))
self.label.repaint()
# method to search directories goes here
self.label.setText(QString("Search Complete"))
答案 1 :(得分:1)
添加包含:
#include <qapplication.h>
让Qt处理事件:
self.label.setText(QString("Searching..."))
qApp->processEvents();
注意:repaint()不是必需品。