У меня есть виджет QTextEdit в частном слоте, который я регулярно обновляю с помощью setText () и insertPlainText ().
Я обнаружил, что setText () / insertPlainText () не обновляет виджет QTextEdit немедленно. Вместо этого QTextWidget обновляется, когда возвращается функция слота. Чтобы проверить это, я поставил sleep () сразу после setText () / insertPlainText ().
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;
}
Это проблема для меня, потому что мне нужно напечатать сообщение в моем виджете QTextEdit ПЕРЕД запуском трудоемкого процесса (используя QProcess). В настоящее время это сообщение не печатается до тех пор, пока не будет возвращен процесс QProcess.
Кто-нибудь знает, как можно заставить виджет QTextEdit отображать его содержимое сразу после setText () / insertPlainText ()?
Использование Qt5 в Fedora 29.