qt本身提供了许多多线程的类,方便我们进行多线程的开发
创建线程:
线程类
Qt 包含下面一些线程相关的类:
QThread 提供了开始一个新线程的方法
QThreadStorage 提供逐线程数据存储
QMutex 提供相互排斥的锁,或互斥量
QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁
QReadWriterLock 提供了一个可以同时读操作的锁
QReadLocker与QWriteLocker 是便利类,它自动对QReadWriteLock加锁与解锁
QSemaphore 提供了一个整型信号量,是互斥量的泛化
QWaitCondition 提供了一种方法,使得线程可以在被另外线程唤醒之前一直休眠。
使用qt的多线程进行文件读写,我们只需要实现比较简单的方式。
首先是实现一个线程类,
class threadreadfile :public QThread
{
Q_OBJECT
public:
signals:
void showfileText(double );
protected:
void run();
public:
QString filepath;
QString filedata;
double filesize;
double fileNum;
};
类只需要集成QThread然后实现run函数之后就可以调用
start函数开始多线程了,
thread.start(QThread::LowPriority);
thread.wait();
start函数里面的参数是定义这个线程的优先级,也方便在run函数里面识别线程。
这样就实现了一个线程的启动,
然后在run函数里面实现需要的细节。
界面与线程之间通讯
线程类是没有调用ui界面的接口的,
我们有时候在线程里面进行了操作需要改变界面的显