Qt主窗口在线程终止后出现
Qt MainWindows appears after threads has terminated
我正在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的默认类,它是我手工创建的
一旦应用程序的事件循环开始,您的表单就会显示在屏幕上。
如果你"使用"应用程序的主线程来执行一些阻塞任务(在循环中从磁盘读取帧),那么表单将无法显示。
这里的解决方案是让表单出现在屏幕上,然后(一旦表单显示出来)在其他线程中开始你耗时的活动(这些线程可能通过信号/插槽机制与UI通信)。
不管怎么说,你总是说boost::thread
,但你只提交了一堆代码,不涵盖…如果您需要更多帮助,请与我们分享其他相关代码
相关文章:
- 如何安全地终止线程?(使用指针)C++
- 自终止线程.使用联接或分离
- 从c/c 中终止线程中的线程,而无需线柄
- 无法终止线程(错误 6)
- 定时与终止线程使用事件不一致
- C++ WinSock Recv 在接收 0 数据时终止线程而不是返回错误代码
- 立即终止线程
- 如何在C++11中终止线程
- 在 C++11 中从外部终止线程
- 错误地终止线程
- 终止线程后的清理
- 如何在Windows线程中终止线程后获取剩余线程数?C++
- 终止线程
- 分段错误,使用 pthread_exit() 终止线程时
- 可以终止线程从另一个进程终止线程
- 正在终止线程
- 如何知道何时终止线程
- C++:如何在没有特定"interruption points"的情况下干净地终止线程
- 强制终止线程C++win32
- 想要终止线程池一旦变量达到一定的值