问:如何实现流程循环?

时间:2015-03-01 12:21:46

标签: c++ qt

我正在开始使用Qt,我正在调整命令行程序,以便将它与GUI结合使用。

我正在构建我的GUI:

int main(int argc, char *argv[])    
{    
    QApplication a(argc, argv);    
    MainWindow w;    
    w.show();    
    return a.exec();    
}    

我想永久处理一些事件。在命令行中,我使用了while循环,它完美地工作。使用Qt,我不知道如何正确处理这些事件。 所以我尝试使用std :: thread,但是当我尝试从线程修改GUI时,我的Qt应用程序崩溃了。使用QThread的问题相同。 我不需要线程,所以如果我可以把我的代码放在Qt的主线程中那就太棒了。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用连接到MainWindow类中的插槽的QTimer来定期运行函数,如下所示:

MainWindow::MainWindow()
{
    myTimer = new QTimer();
    myTimer->setSingleShot(false);
    myTimer->start(intervalInMilliseconds);
    connect(myTimer, &QTimer::timeout, this, &MainWindow::handleMyEvents);
}

void MainWindow::handleMyEvents()
{
    // Your code here
}

您也可以使用线程,但请注意,您不能从任何不是QApplication线程的线程调用任何GUI代码,这可能是您尝试崩溃的原因。