我的应用程序读取mysql数据库并根据mysql查询绘制表。我想使用进度条,但我不能,因为QSqlDatabase进程冻结了我的主窗口。
我在某处读过,我应该分离gui和mysql进程的线程并使用进程间通信,但找不到任何示例。在线程之间传输mysql查询的最佳方法是什么?
答案 0 :(得分:1)
有两种方法可以防止GUI冻结:
将及时计算卸载到工作线程并进行通信 通过信号使用主GUI线程。
要求您的GUI线程处理其中的一些待处理消息 事件循环。
我建议选择第二个选项,因为它很快并且通常可以解决这些问题。但请记住,这不是干净的做事方式,而是应该从主GUI线程中挤出苛刻的计算。
第二种解决方案涉及在查询消费循环中的某处调用单个函数调用。一般架构是:
While(query.next()){
...
QApplication::processEvents();
...
}