我正在尝试从按钮单击,线程等更新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而不会崩溃。我怎样才能做到这一点?感谢。
答案 0 :(得分:1)
您不能进行UI操作,例如从主线程外部更新QTextEdit的文本。对此的解决方案是从非主线程发出信号,并将其连接到主线程中的一个插槽,以便UI工作。