注:此文是站在Qt5的角度说的,对于Qt4部分是不适用的。
1.先说Qt信号槽的几种连接方式和执行方式。
1)Qt信号槽给出了五种连接方式:
Qt::AutoConnection | 0 | 自动连接:默认的方式。信号发出的线程和糟的对象在一个线程的时候相当于:DirectConnection, 如果是在不同线程,则相当于QueuedConnection |
Qt::DirectConnection | 1 | 直接连接:相当于直接调用槽函数,但是当信号发出的线程和槽的对象不再一个线程的时候,则槽函数是在发出的信号中执行的。 |
Qt::QueuedConnection | 2 | 队列连接:内部通过postEvent实现的。不是实时调用的,槽函数永远在槽函数对象所在的线程中执行。如果信号参数是引用类型,则会另外复制一份的。线程安全的。 |
Qt::BlockingQueuedConnection | 3 | 阻塞连接:此连接方式只能用于信号发出的线程(一般是先好对象的线程) 和 槽函数的对象不再一个线程中才能用。通过信号量+postEvent实现的。不是实时调用的,槽函数永远在槽函数对象所在的线程中执行。但是发出信号后,当前线程会阻塞,等待槽函数执行完毕后才继续执行。 |
Qt::UniqueConnection | 0x80 | 防止重复连接。如果当前信号和槽已经连接过了,就不再连接了。 |
继续阅读“Qt信号槽的一些事”
发布于2015年7月29日
分类C/C++、Qt、编程设计
标签qt、信号槽、同步、异步、线程
QLib7z还是上次做一个项目的时候需要压缩和解压文件,考虑过7z,和QRunInfo一起从从Qt-Installer-Framework中提取的。继承提取源的协议:LGPL。后来上面决定用的是zip格式,也就没用到这个,我也就仅仅写个例子放在那里了。
前两天有人群里问7z解压,我就随口推荐了这个,使用中有的api他没有弄清楚,我就又拉去过来从源码里翻了翻api, 继续阅读“QLib7z:Qt对7z格式解压的封装”
发布于2015年3月19日
分类C/C++、Qt、编程设计
标签7z、qt、压缩、解压
注:此文不涉及Qt线程使用的具体代码例子,如果是怎么使用Qt线程,见下面链接。
现在写一个项目并行和多线程几乎是必用的。在Qt中最多的是用QThread,只是QThread有两种用法,继承与QObject::moveToThread函数。在群里有人郁闷Qthread的用法,此文写下个人简单的见解。
首先简单说下QThread的这两种用法: 继续阅读“Qt线程使用杂谈”
发布于2015年1月28日
分类Qt、编程设计
标签moveToThread、qt、Qthread、多线程
接上文翻译,说明在上文:[翻译]理解Qt容器:STL VS QTL(二)——迭代器
QTypeInfo
我们同样需要说下类型系统来去最优化使用Qt容器,除非你不想为你自己的类型去优化效率和内存占用:QTypeInfo.
QTypeInfo 是一个Traits Class ,为大多数Qt容器去开启已知的优化。 继续阅读“[翻译]理解Qt容器:STL VS QTL(三)——类型系统 和其他处理”
发布于2014年12月25日
分类C/C++、Qt、编程设计
标签ERRO、QTL、STL、容器
做个代码笔记,下次直接复制就用了,不用再找了。我这个记忆力,也记不住几天、、、
1.无边框拖动:
1)设置无边框:
1 | this ->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint); |
继续阅读“代码笔记:Qt无边框和目录的一些处理”
发布于2014年12月19日
分类C/C++、Qt、编程设计
标签qt、目录、窗口、边框
接上文翻译,说明在上文:理解Qt容器:STL VS QTL(一)——特性总览
迭代器:
在Qt关联容器中的迭代器默认指向的是关联容器的value元素,不同于STL的关联容器的迭代器默认指向一个pair<key,value>的键值相对应的pair结构。这样就取代了STL取值用的it->second这个不美观的写法,STL的接口反倒是一种象牙塔的写法。继续阅读“[翻译]理解Qt容器:STL VS QTL(二)——迭代器”
发布于2014年11月26日
分类C/C++、Qt、编程设计
标签QTL、STL、容器、迭代器、遍历
注:此文为翻译大牛的文章,原文地址:http://marcmutz.wordpress.com/effective-qt/containers/ (需翻墙),原文较长,我E文不是很好,而且个人时间安排,我就分段翻译发出了,这是第一篇,余下的我会慢慢补齐的。
容器类是面向对象编程的一个重要的部分,是一个而非常重要的,帮助我们去管理内存的工具。
Qt有它自己实现的容器类,十分像STL,但是还是有些差异的,一些是Qt做的补充,还有一些不能对应。作为一个Qt开发者,是非常重要的去理解什么时候去使用哪一个Qt容器类,和一些时候,你去用STL去替换QTL。 继续阅读“[翻译]理解Qt容器:STL VS QTL(一)——特性总览”
发布于2014年11月15日
分类C/C++、Qt、编程设计
标签QTL、STL、容器
在做更新,在测试异常的时候,在下载过程中,发现如果直接系统禁用了网络,会报错误,可以捕获。但是如果是第三方软件限制程序联网,问题来了。
程序会一直在那里等待,没有异常,也不发送QNetworkAccessManager::finsh和QNetworkReply::error和QNetworkReply::finsh信号。
所以动念头为下载加个超时,但是QNetworkAccessManager,QNetworkReply和QNetworkRequest都没有相关的设置函数。其实仔细想一下,也没有办法直接提供超时,因为下载的文件有大有小,网络有快有慢,什么才算超时呢。 继续阅读
转自:http://www.dushibaiyu.com/category/code/jichu/qt-jichu