相关疑难解决方法(0)

QT +如何从在不同线程中运行的自定义C++代码调用插槽

我是QT的新手,我正在做一些学习.

我想触发一个从C++线程(目前是Qthread)修改GUI小部件的插槽.

不幸的是我得到了:ASSERTION失败了: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();
    }
Run Code Online (Sandbox Code Playgroud)

窗口:

class mywindow : public QMainWindow …
Run Code Online (Sandbox Code Playgroud)

qt qt4 signals-slots

13
推荐指数
3
解决办法
2万
查看次数

标签 统计

qt ×1

qt4 ×1

signals-slots ×1