我正在开始使用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的主线程中那就太棒了。
任何人都可以帮助我吗?
答案 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代码,这可能是您尝试崩溃的原因。