Qt4:如何在线程间传递mysql查询?

Qt4: how to transmit mysql query between threads?

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

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

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

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

  • 要求您的 GUI 线程处理它在 事件循环。

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

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

While(query.next()){
    ...
    QApplication::processEvents();
    ...
}