相关疑难解决方法(0)

主线程繁忙时如何使Qt工作?

Main(函数main在那里)我的程序的线程保留用于非GUI任务.它调用了许多冗长的计算功能.所有已实现的GUI都在一个单独的线程中完成它们的工作.

我现在要使用Qt实现一个GUI.Qt文档说所有GUI相关的任务都应该在主线程中完成.在我的例子中,在主线程中偶尔插入QCoreApplication :: processEvents()调用几乎没用,因为它们之间有很大的延迟.

有没有办法克服Qt的这种约束?是不可能在Qt程序的主线程中做一些非GUI相关的事情?

qt multithreading

24
推荐指数
3
解决办法
2万
查看次数

QApplication在非主线程中

我需要在一个非主要的线程中执行()一个QApplication(我的GUI必须是可以在运行时动态加载和卸载的插件,因此我无法访问主线程).有没有人知道(相对)无痛的方式来破解Qt限制在主要之外启动QApplication?

我正在使用gcc4.3.4在C++中用Qt4开发Linux.

c++ user-interface qt qt4

10
推荐指数
2
解决办法
2万
查看次数

如何使用线程实例化多个QApplication

我找到了一种解决方案,以防止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)

c++ user-interface qt multithreading qapplication

1
推荐指数
1
解决办法
723
查看次数

标签 统计

qt ×3

c++ ×2

multithreading ×2

user-interface ×2

qapplication ×1

qt4 ×1