我是 QT 的新手,我正在学习。
我想触发一个从 C++ 线程(当前是 Qthread)修改 GUI 小部件的插槽。
不幸的是,我得到一个:断言失败:Q_ASSERT(qApp && qApp->thread() == QThread::currentThread());
这是一些代码:
(MAIN + Thread 类)
class mythread : public QThread
{
public:
mythread(mywindow* win){this->w = win;};
mywindow* w;
void run()
{
w->ui.textEdit->append("Hello"); //<--ASSERT FAIL
//I have also try to call a slots within mywindow which also fail.
};
};
int main(int argc, char *argv[])
{
QApplication* a = new QApplication(argc, argv);
mywindow* w = new mywindow();
w->show();
mythread* thr = new mythread(w);
thr->start();
return a->exec();
}
窗户:
class mywindow : public QMainWindow
{
Q_OBJECT
public:
mywindow (QWidget *parent = 0, Qt::WFlags flags = 0);
~mywindow ();
Ui::mywindow ui;
private:
public slots:
void newLog(QString &log);
};
所以我很好奇如何通过不同线程中的代码更新 gui 部分。
感谢您的帮助