QPlainTextEdit() - > setPlainText()不断崩溃

时间:2017-11-29 23:40:41

标签: c++ qt

我正在尝试从按钮单击,线程等更新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而不会崩溃。我怎样才能做到这一点?感谢。

1 个答案:

答案 0 :(得分:1)

您不能进行UI操作,例如从主线程外部更新QTextEdit的文本。对此的解决方案是从非主线程发出信号,并将其连接到主线程中的一个插槽,以便UI工作。