大概说一下用法,例子: QMutex mutex; int number = 6; void method1() { mutex.lock(); number *= 5; number /= 4; mutex.unlock(); } void method2() { mutex.lock(); number *= 3; number /= 2; mutex.unlock(); } 用法大概可以总结为这样: QMutex mutex; void method() { mutex.lock(); /…
在Qt中并没有Sleep函数可以调用,在程序编写时往往需要休眠几秒,这里举出两个方法,不知道是否啥不良隐患没~~ 方法一: class SleeperThread : public QThread{public:    static void msleep(unsigned long msecs)    {        QThread::msleep(msecs);    }}; // 调用方法SleeperThread::msleep(1000); 方法二: QMutex mutex;QWa…
Qt对线程提供了支持,基本形式有独立于平台的线程类.线程安全方式的事件传递和一个全局Qt库互斥量允许你可以从不同的线程调用Qt方法.警告:所有的GUI类(比如,QWidget和它的子类),操作系统核心类(比如,QProcess)和网络类都不是线程安全的.QRegExp使用一个静态缓存并且也不是线程安全的,即使通过使用QMutex来保护的QRegExp对象.启用线程支持在Windows上安装Qt时,在一些编译器上线程支持是一个选项.在Mac OS X和Unix上,线程支持可以当你在运行config…
在线程中定义一个信号量: QMutex pause; 把run()函数中循环执行的部分用信号量pause锁住:   void run()   {   while(1)   {   pause.lock();   //循环执行的内容,比如视频播放   pause.unlock();   }   } 在主线程(UI线程)中,如果想暂停线程执行,就将pause加锁: thread->pause.lock(); //thread是线程指针 如果想继续线程,就将pause解锁: thread->paus…
本文讲述的是在Qt中QThread使用方法,QThread似乎是很难的一个东西,特别是信号和槽,有非常多的人(尽管使用者本人往往不知道)在用不恰当(甚至错误)的方式在使用QThread,随便用google一搜,就能搜出大量结果出来.无怪乎Qt的开发人员 Bradley T. Hughes 声嘶力竭地喊you are-doing-it-wrong 和众多用户一样,初次看到这个时,感到 Bradley T. Hughes有 些莫名奇妙,小题大作.尽管不舒服,当时还是整理过一篇博客QThread 的使…
QT中使用线程可以提高工作效率. 要使用线程要经过一下四个步骤: (1)先创建一个c++ class文件,记得继承Thread,创建步骤如下: a.第一步 b.第二步 (2)自定义一个run函数,以后启动线程的时候,程序就会跳转到run函数中 void run(); (3)初始化线程 HDThread mythread = new HDThread(); (4)启动线程 mythread->start(); 下面来看看线程使用的具体列子: 线程头文件hdthread.h: #ifndef HDT…
Qt中使用图片资源的方法有很多种,以前我一直分不清各种之间的区别和Qt相应的处理机制,后来遇到一些实际的问题,然后再加上查阅源码和资料,总算弄明白一些事情,但是本文仅仅是个人理解,如有错误之处请告诉我,大家一起进步. 图片是一种资源,而在Qt中,对于资源的使用是有其独特的方式的! ①:一般来说:资源在内存中是用资源对象树来表示的,该树在程序启动时创建. ②:而对于资源而言:我们都是需要先将其加入到这棵树中才能加载到内存中并被程序使用!! ③:而将一个图片资源放到程序的资源对象树中是用函数QRes…
一介绍 通过编写一个QSingleApplication类,来实现Qt程序的单例化,原文的作者是在Windows Vista + Qt4.4 下实现的,不过应用在其他平台上是没问题的.(本文是我在http://www.qtcentre.org/wiki/index.php?title=SingleApplication上看到的) 二代码 方案一:使用Qt中的QSharedMemory,QLocalServer和QLocalSocket实现(不过需要在你的.pro里加上QT += network)…
GUI操作顺序问题引发异常: 有时候我们使用写GUI程序的时候会遇到这样的问题:比如在程序中,建立了一个列表的GUI.这个列表是随着时间不断更新的,而且操作也会读取这个列表GUI的内容. 如果这个程序是多线程的程序,而且只是除了GUI的线程不操作,只是其他线程操作这个列表GUI,那么这个问题很简单,只用加互斥锁就可以了.但如果GUI线程自己本身也要操作这个列表,那么这个问题就很麻烦了. 我们可以很容易地想到一种场景,比如GUI线程读了列表的一些表项(比如选定),此时线程中的某个方法keep了这些…
Qt中使用图片资源的方法有很多种,以前我一直分不清各种之间的区别和Qt相应的处理机制,后来遇到一些实际的问题,然后再加上查阅源码和资料,总算弄明白一些事情,但是本文仅仅是个人理解,如有错误之处请告诉我,大家一起进步. 图片是一种资源,而在Qt中,对于资源的使用是有其独特的方式的! ①:一般来说:资源在内存中是用资源对象树来表示的,该树在程序启动时创建. ②:而对于资源而言:我们都是需要先将其加入到这棵树中才能加载到内存中并被程序使用!! ③:而将一个图片资源放到程序的资源对象树中是用函数QRes…