Main(函数main在那里)我的程序的线程保留用于非GUI任务.它调用了许多冗长的计算功能.所有已实现的GUI都在一个单独的线程中完成它们的工作.
我现在要使用Qt实现一个GUI.Qt文档说所有GUI相关的任务都应该在主线程中完成.在我的例子中,在主线程中偶尔插入QCoreApplication :: processEvents()调用几乎没用,因为它们之间有很大的延迟.
有没有办法克服Qt的这种约束?是不可能在Qt程序的主线程中做一些非GUI相关的事情?
我需要在一个非主要的线程中执行()一个QApplication(我的GUI必须是可以在运行时动态加载和卸载的插件,因此我无法访问主线程).有没有人知道(相对)无痛的方式来破解Qt限制在主要之外启动QApplication?
我正在使用gcc4.3.4在C++中用Qt4开发Linux.
我找到了一种解决方案,以防止app.exec()在这里阻塞主线程。
我尝试实现此功能,但出现以下错误:
WARNING: QApplication was not created in the main() thread.
QWidget: Cannot create a QWidget without QApplication
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
PB是具有静态函数的类,该函数可初始化GUI。
pb.cpp:
bool PB::Init(int argc, char *argv[],
int ID) {
QApplication app(argc, argv);
PB PB(ID); // The constructor creates an instance of the pushbutton qt object
app.exec();
return true; // Do I even need this because app.exec() runs an infinite loop right?
}
Run Code Online (Sandbox Code Playgroud)
main.cpp:
int main(int argc, char *argv[]) {
std::thread first(&PB::Init, argc, argv, 0);
std::thread second(&PB::Init, …Run Code Online (Sandbox Code Playgroud)