相关疑难解决方法(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对话框如何从函数中触发accept()和reject()

我有情况,我QDialog从main.cpp文件打开窗口,然后我等待exec()方法返回基于成功或失败的QDialog.像这样 :

   int main( ... ) {
    LoginDialog *loginDlg = new LoginDlg;

    if( loginDlg->exec() != Qt:;Accepted ) {
    return 0;
    }

    //check the login Info
    delete loginDlg;

    MainWindow w;
    w.show()
    return app.exec();
    }
Run Code Online (Sandbox Code Playgroud)

从Qt示例(地址簿)我看到我可以使用accept()和reject()插槽.问题是我喜欢基于某些功能流关闭的窗口,而不是ok/close按钮.如何从功能中触发这些插槽?.

c++ qt qdialog

2
推荐指数
1
解决办法
8651
查看次数

标签 统计

qt ×2

c++ ×1

qdialog ×1

qt4 ×1

signals-slots ×1