QObject::moveToThread:无法将小工具移动到新线程



My IDE Qt 5.0.1,平台Linux

我有一个关于设置窗口小部件的问题。

这是我的主.cpp->

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QThread cThread;
    MainWindow w;
    w.doSetup(cThread);
    w.moveToThread(&cThread);
    cThread.start();
    if(cThread.isRunning())
    {
        qDebug() << " Thread is Running...";
    }

    w.show();
    return a.exec();
}

这是doSetup()方法->

void MainWindow::doSetup(QThread &mainThread)
{
    QObject::connect(&mainThread, &QThread::started, this, &MainWindow::activeLoopMainC);
}

我检查了我的信号槽机制,它工作。

槽法->

void MainWindow::activeLoopMainC()
{
    qDebug() << " Signal-Slot structure working successfully..";
    mainThreadProc((void*)(instAddr));
}

我用这个slot方法从main.c调用一个函数。

在调试中,工作代码没有问题。但是我的窗户是空的。只有一个框架。

我收到一条错误消息:QObject::moveToThread:小工具无法移动到新线程

我该如何解决这个问题?

提前感谢您的回答。

您不能将小部件移动到另一个线程中——为了保持用户界面的响应性,Qt需要在主线程内完成所有GUI工作。

如果您有后台工作要做,那么将后台工作程序移到其他线程,而不是用户界面。

相关内容

  • 没有找到相关文章

最新更新