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