想必用Qt做界面的同学都遇到过界面卡死的问题,这里我也遇到了,我的问题出在Sqlite数据库写处理的地方,可能您会说可以将数据库写处理的操作放在线程里执行啊。首先Sqlite数据库有这么一个不尽人意的特点,那就是它不支持在写数据的时候有别的操作参与进来,所以无论你将写操作放在自己创建的线程或是UI线程里都会有DB文件操作的风险。也许您会说在写数据操作时将DB连接锁起来,不让别的操作来用,或者是让别的操作等待。这样到底行不行呢?咱下面上代码:
首先说明:代码中有些变量或函数定义未给出,这里会给出它们的意思,旨在理解代码
//thread.h
#ifndef THREAD_H
#define THREAD_H
#include <QThread>
class CThread : public QThread
{
Q_OBJECT
public:
CThread(){}
protected: