【发布时间】:2015-11-21 13:24:10
【问题描述】:
我正在 Qt 上使用boost::thread(我知道QThread)创建一个应用程序。我没有使用 Qt Designer 来创建我的用户界面。我创建了一个名为MainWindow 的类,它从QWidget 派生而来。在MainWindow 中有两个线程正在读取和处理视频。
我的主要功能是
#include<QApplication>
#include<iostream>
#include<mainwindow.h>
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc,char * argv[])
{
QApplication prog(argc,argv);
cout<<"M"<<endl;
MainWindow m;
cout<<"H"<<endl;
m.show();
return prog.exec();
}
问题是,我的线程正在调用函数,其中我使用无限循环从磁盘读取帧。所以函数在无限循环被破坏后返回。在上面的代码中,首先完成所有循环,然后显示主窗口。如何在线程中的循环运行时使主窗口可见。
注意 MainWindow 不是 Qt 的默认类,它是我手动创建的。
【问题讨论】:
-
在开始执行其他任何操作之前,您必须进入应用程序的事件循环 (prog.exec())。考虑在事件循环启动并运行后(例如通过计时器)通过信号触发您的处理线程。
标签: c++ multithreading qt user-interface boost-thread