0

我的应用程序读取 mysql 数据库并根据 mysql 查询绘制表。我想使用进度条,但我不能,因为 QSqlDatabase 进程冻结了我的主窗口。

我在某处读过,我应该分离 gui 和 mysql 进程的线程并使用进程间通信,但找不到任何示例。在线程之间传输mysql查询的最佳方式是什么?

4

1 回答 1

1

有两种方法可以防止您的 GUI 冻结:

  • 将及时的计算卸载到工作线程并通过信号与主 GUI 线程通信。

  • 要求您的 GUI 线程在事件循环中处理它的一些未决消息。

我建议选择第二个选项,因为它很快并且通常可以解决这类问题。但是请记住,这不是一种干净的做事方式,应该将要求苛刻的计算从主 GUI 线程中挤出。

第二种解决方案涉及在查询消费循环中的某处放置一个函数调用。一般架构是:

While(query.next()){
    ...
    QApplication::processEvents();
    ...
}
于 2016-01-28T08:51:32.663 回答