【问题标题】:Qt how to implement a process loop?Qt如何实现一个进程循环?
【发布时间】:2015-03-01 20:33:44
【问题描述】:

我开始使用 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 的主线程中,那就太好了。

有人可以帮帮我吗?

【问题讨论】:

    标签: c++ qt


    【解决方案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 代码,这可能是您的尝试崩溃的原因。

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      • 2014-02-15
      • 2010-10-14
      • 2022-12-19
      相关资源
      最近更新 更多