【发布时间】:2019-06-14 23:53:29
【问题描述】:
我在私人插槽中有一个 QTextEdit 小部件,我会定期使用 setText() 和 insertPlainText() 对其进行更新。
我发现 setText()/insertPlainText() 不会立即更新 QTextEdit 小部件。相反,当 slot 函数返回时,QTextWidget 会更新。为了测试这一点,我在 setText()/insertPlainText() 之后放置了一个 sleep()。
class MyWindow : public Widget
{
MyWindow()
{
my_button = new QPushButton(this);
my_edit = new QTextEdit(this);
connect(my_button,
&QPushButton::clicked,
this,
&MyWindow::my_callback);
}
private slots:
void my_callback()
{
my_edit->setText("sample text");
// nothing happens; the QTextEdit
// widget does not show "sample text"
sleep(10);
// the QTextEdit widget will show
// "sample text" AFTER the sleep,
// when my_callback returns.
}
private:
QPushButton* my_button;
QTextEdit* my_edit;
}
这对我来说是个问题,因为我需要在启动一个耗时的过程(使用 QProcess)之前在我的 QTextEdit 小部件中打印一条消息。目前,直到 QProcess 进程返回后才会打印此消息。
有谁知道如何让 QTextEdit 小部件在 setText()/insertPlainText() 之后立即显示其内容?
在 Fedora 29 上使用 Qt5。
【问题讨论】: