【发布时间】:2017-11-29 23:40:40
【问题描述】:
我正在尝试通过单击按钮、线程等来更新 QPlainTextEdit()。在 MainThread 之外的某个地方,在 Qt 文档中它说它必须使用信号,但我不知道如何。如果我尝试执行 CreateThread() 或使用 std::thread 更新
class MainWindow : public QMainWindow
{
Q_OBJECT
...
private slots:
handleButtonClick();
Thread();
...
private:
QPlainTextEdit *TextView;
}
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
...
TextView = new QPlainTextEdit();
TextView->setReadOnly(true);
TextView->setCursorWidth(0);
QPUshButton *UpdateButton = new QPushButton();
connect(UpdateButton, SIGNAL(released()), this, SLOT(handleButtonClick()));
....
}
MainWindow::handleButtonClick()
{
// eventually this will cause a crash, usually not imemdiately
TextView->insertPlainText("test");
}
MainWindow::Thread()
{
TextView->insertPlainText("test");
}
如您所见,我想要一种从主线程外部更新此 QPlainTextEdit 而不会崩溃的方法。我怎样才能做到这一点?谢谢。
【问题讨论】:
-
如果您希望我们帮助您,您必须提供minimal reproducible example
-
这有什么无法验证的?
-
可验证。
-
verifiable 意味着我可以复制您的代码并重现您的相同错误,但您的代码不能。