2

GUI 元素的所有属性(文本、项目...)在插槽完成运行后都会更新,并且我有一个显示应用程序状态的小标签(即“正在刷新...”、“正在配置...” 、“正在扫描...”、“完成”等)在触发的插槽运行期间。

如何在触发插槽后立即将标签的文本设置为“刷新...”之类的内容,并且在插槽几乎完成时将标签的文本更改为“完成”之类的内容?

目前我正在通过发行来做到这一点

    ui->Status->setText("Refreshing ...");
    ...
    ui->Status->setText("Done");

在插槽内,但只有在插槽完成后才能看到更改,所以我从来没有看到“刷新......”。

对不起,如果这很容易,但我是 OOP 的新手,我一直在按顺序思考。

4

1 回答 1

1

这就是我当时最终做的事情。“qApp->processEvents();” 是关键。Repaint() 是不够的。

void Widget::SetStatus(QString status)
{
   ui->Status->setText(status);
   ui->Status->repaint();
   qApp->processEvents();
}
于 2014-07-11T15:22:05.380 回答