- 博客(48)
- 收藏
- 关注
原创 QClipboard 剪贴板
在Qt中,我们可以使用QClipboard类来访问窗口系统的剪贴板对象。剪贴板为我们在不同的应用间拷贝粘贴数据提供了一种简单的机制。并且,其所支持的数据类型和Qt中的拖放操作所支持的类型相同。
2017-04-25 14:40:09 4441 1
原创 QBitmap 单色图片
QBitmap表示一种只有黑白的单色图片,类似于mfc中的位图。该类主要用于创建自定义的光标和画刷对象,以及创建区域对象和为某个空间设置掩码图片。
2017-04-25 10:38:45 2962
原创 使用QXmlStreamReader和QXmlStreamWriter读写XMl文件
使用QXmlStreamReader和QXmlStreamWriter读写XMl文件
2017-04-20 08:42:47 4067
原创 QWaitCondition 条件变量
在之前的文章中,我们已经讲过了很多种线程同步的方法,如互斥锁,信号量,读写锁等,今天我们再来学习一种线程同步的方法,条件变量。
2017-04-18 11:19:10 5531
原创 QTimer 定时器
QTimer类为我们提供了一个即可重复触发又可单次触发的定时器。它是一个高层次的应用程序接口。要使用它,只需创建一个QTimer类对象,将它的timeout()信号连接到适当的函数上,然后调用其start()函数开启定时器即可,此后,QTimer对象就会周期性的发出timeout()信号。
2017-04-17 13:51:41 34773
原创 QTimeLine 控制动画
QTimeLine顾名思义表示一条时间线,即一个时间序列,该时间序列会按我们实现定义好的间隔一步一步的往前变化,并在每次变化时都会发出一个frameChanged()信号。所以,我们通常会使用该类来驱动我们的动画。
2017-04-17 12:26:07 921
原创 JsonCpp
JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON是存储和交换文本信息的语法,采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为了理想的数据交换语言。
2017-04-15 09:39:55 788 1
原创 QThread与多线程
QThread类为我们提供了一种平台无关的管理线程的方式。一个QThread对象管理应用程序中的一个线程,该线程从run()函数开始执行。并且,默认情况下,我们可以在run()函数中通过调用QThread::exec()函数来在当前线程中开启一个事件循环。
2017-04-14 13:47:44 3287
原创 QSystemSemaphore 系统级信号量
在之前的一篇文章中,我们讲过了QSemaphore类,其可以用于同步多线程。而今天要讲到的这个类,根据名字就可以猜测到,其可以在整个系统中使用,即它既可以用于多线程,也可以用于多线程。当然,这也意味着,QSystemSemaphore类是一个比较重量级的类,所以,除非在同步多进程的情况下,否则不应该使用该类。其他方面,该类和QSemaphore均相同,操作也相同。
2017-04-13 15:15:03 3482
原创 QStorageInfo获取磁盘信息
QStorageInfo类提供了系统当前挂载的存储和驱动器的相关信息,包括它们的空间,挂载点,标签名,文件系统名。
2017-04-13 10:26:45 4875 2
原创 QStandardPaths 获得系统特定目录
QStandardPaths提供了一系列的静态方法,供我们用来获得当前系统配置下的特定的目录。比如,已Windows系统为例,有用户目录,图片目录,视频目录,桌面等等。该类的使用也非常方便,因为它只有几个静态方法,我们可以直接调用。
2017-04-13 09:01:24 7679
原创 QSignalMapper 信号映射
QSignalMapper类收集了一系列的无参信号,然后使用相对于信号发送者来说的整数、字符串或控件参数来重新发送它们。
2017-04-11 13:07:55 2941
原创 Qt隐式共享与显式共享
Qt中的很多C++类都使用了隐式数据共享来最大化资源使用和最小化拷贝代价。隐式共享类在作为参数传递时,不仅安全而且高效,因为只是指向数据的指针被传递了,底层的数据只有在函数向它执行写动作时才会发生拷贝,即写时拷贝。
2017-04-10 13:43:55 3456
原创 QSemaphore 信号量
QSemaphore类提供了一种通用的计数信号量。信号量是互斥锁的泛化。一个互斥锁只能被锁住一次,而一个信号量可以被多次请求。所以,信号量通常用来保护某个特定数量的资源。
2017-04-10 11:03:10 935
原创 使用QSaveFile类安全的读写文件
QSaveFile类也是一种I/O设备,来用来读写文本文件和二进制文件,但使用该类的话,在写入操作失败时不会导致已经存在的数据丢失。
2017-04-10 09:28:06 2601
原创 QRunnable与多线程
前面的博文中,我们讲过QtConcurrent模块,该模块是Qt中实现并发编程的高级API接口,而QRunnable结合QThreadPoll和QThread都是Qt中与并发编程相关的低级接口。今天我们先来看QRunnable和QThreadPool。
2017-04-10 08:35:36 9126 3
原创 Qt中的读写锁
Qt中的QReadWriteLock类为我们提供了读写锁的功能。读写锁是用来保护可以被读访问和写访问的资源的一种同步工具。如果你想让多个线程同时的对资源进行读访问,但只要有一个线程要对资源进行写访问时,所有其他的线程必须等待,直到写访问完成。对于这种情况,读写锁是非常有用的。
2017-04-06 15:52:27 12634
原创 Qt动画组
Qt中的动画组是由QAnimationGroup抽象类来表示的。一个动画组是一个动画的容器。动画组一般负责管理它的动画的状态,也就是说由它决定,什么时候开始动画,什么时候停止动画,什么时候暂停动画,什么时候重新运行动画。目前,Qt中提供了两种动画组:并行动画组合串行动画组。
2017-04-05 20:09:12 1436
原创 QMetaMethod 获取成员函数的元信息
在上一篇中,我们将的是QMetaEnum类,它可以获得一个类中由Q_ENUM宏或Q_FLAG宏声明的枚举类型的元信息。同样,QMetaMethod类是用来获取成员方法的元信息的一个类。
2017-04-05 09:23:00 3154
原创 QMetaEnum获取枚举元信息
QMetaEnum 类提供了一个枚举的元数据。我们可以使用该类的静态模板函数,fromType来获得关于某个枚举的QMetaEnum对象,然后就可以调用该类的成员函数来获得该枚举的相关信息。该枚举必须使用Q_ENUM宏进行声明。
2017-04-04 17:02:28 4767
原创 使用QLibrary加载动态库
使用QLibrary可以在程序运行时加载动态链接库。一个QLibrary的实例作用于一个单一的共享库上。QLibrary提供了一种平台无关的方式访问库中的函数。可以在构建QLibrary的实例时将要加载的库文件传入,也可以在创建实例后使用setFileName()显式的设置要加载的文件名。当加载库文件时,QLibrary会搜索所有平台特定的库位置,除非传入的文件名具有绝对路径。
2017-04-04 10:50:31 26164
原创 Qt中的JSON操作
JSON(JavaScript Object Notation,js对象标记)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,使用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效的提升网络传输效率。关于JSON的更多解释,请参看JSON官网。
2017-04-03 07:50:48 37163 4
原创 Qt Model/View编程介绍
Qt中包含了一系列的项视图类,它们使用model/view的架构去管理数据之间的关系以及它们被展示给用户的方式。这种由这种架构引进的功能分离特性给了开发者很大的灵活性去自定义自己的展示方式,并且提供了一个编制的模型接口以使很多种的数据源都可以和现存的视图相结合。
2017-03-28 07:52:29 8915
原创 Qt中的常用容器类
在Qt库中为我们提供了一系列的基于模板的容器类。这些类可以被用来存储特定类型的项。例如,如果你需要一个大小可以变得QString数组,那么可以使用QVector。
2017-03-26 19:47:49 26211
原创 使用QtConcurrent编写多线程程序
Qt在其QtConcurrent命名空间中为我们提供了编写多线程程序的高级API,使用这个API可以使我们在不使用低级的线程元素,如互斥锁,读写锁,条件变量或者信号量的情况下编写出搞笑的多线程程序。并且,使用QtConcurrent编写的程序能够自动地根据当前可以使用的处理器核心数调整实际使用的线程数目。这就意味着我们目前所写的程序即使将来的多核心机器上也能正常运行,并有很好的伸缩性。QtCo
2017-03-26 08:14:49 4449
原创 使用QFuture类监控异步计算的结果
在Qt中,为我们提供了好几种使用线程的方式,除了最基本的QThread类之外,还有QRunnable抽象类,类似于Java的runnable接口,还可以使用moveToThread() 函数,还有更高级的QtConcurrent框架。而今天,我们要看的QFuture就是和QtConcurrent框架API配合使用的一个类。新来看Qt帮助文档对这个类的详细介绍。QFuture类用来表示一个异步计
2017-03-24 14:40:43 3070
原创 使用QFileSystemWatcher监控磁盘文件状态变化
使用QFileSystemWatcher类可以实时监视磁盘上某个文件或目录的状态是否发生变化,比如删除、重命名等。我们只需将要监视的文件或目录通过其成员函数addPath() 或 addPaths() 添加到该类对象的监控列表中即可;当然,我们也可以根据实际情况调用removePath() 或 removePaths() 将现存的文件或目录从监控列表中删除。QFileSystemWatcher
2017-03-24 10:08:58 3041 3
原创 使用QFileInfo类获取文件信息
QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接,等等。并且,通过这个类,可以修改文件的大小和最后修改、读取时间。同时,QFileInfo类也可以用来取到Qt 资源的相关信息。QFileInfo既可以表示绝对路径,也可以表示相对路径的文件。其中,绝对路径就是已"/"开始的路径(或者在Windows系统上就是已某个盘符开始
2017-03-23 16:15:52 24280
原创 使用QFile进行文件操作
QFile类我我们提供了操作文件的常用功能。它是一种io设备,可以用来读写文本文件和二进制文件,也可以用来读写Qt的资源文件。QFile类可以单独使用,该类本身提供了read/write函数,但更方便的方式是,将QFile和QTextStream或QDataStream一起使用。一般情况下,使用QFile创建对象时,就会把要操作的文件名传递给它。但该类也提供了一个setFileName() 方
2017-03-23 09:03:16 35282
原创 QElapsedTimer 计时器
QElapsedTimer提供了一种快捷的计算流逝时间的方法。它通常被用来计算两个事件或操作之间过去了多久。并且,该类的方法非常类似于我们之前讲过的QTime类的三个计时函数,所以,我们可以很快速的在使用这两个类的代码之间进行移植。
2017-03-22 09:19:31 13703 1
原创 Qt 目录操作
QDir类提供了访问目录结构和目录内容的功能。它一般被用来操作路径名,访问路径和文件的信息。还可以用来访问Qt的资源系统。Qt使用"/"作为统一的目录分隔符,类似于在URL中所使用的那样。
2017-03-21 13:13:43 6979
原创 QDebug 输出调试信息
在程序开发过程中,我们经常需要打印一些调试信息到终端,以供我们开发人员快速定位软件的问题所在。而QDebug类就是用来完成这样的功能的一个类。使用QDebug类,我们可以将调试信息打印到控制台、文件、甚至某个字符串中。
2017-03-21 10:22:50 29422 2
原创 Qt中的日期时间类
在Qt中,为了方便日期和时间的表示和相关操作,为我们提供了两个类。一个是QDate,表示年月日形式的日期;一个是QTime,表示时分秒形式的时间。今天,就来学习一下这两个类的使用方法。QDate类已格里高里历为准表示年月日的日期。该类可以从系统时钟里读取当前日期,并且为我们提供了大量方便的日期操作,比如日期的加减。通常我们可以使用特定的年月日数字来构造一个该来的对象,让给在进行其他计算。其
2017-03-21 08:33:11 17416
原创 QDataStream 二进制数据读写
Qt中的QDataStream类为我们的程序提供了读写二进制数据的能力。一个数据流如果是二进制编码的数据流,那么它肯定是与计算机的操作系统、CPU或者字节序无关的。例如,一个数据流是在一个运行Windows系统的PC机上被写入的,那么它照样可以在一台运行Solaris的Sun SPARC的机器上被读取出来。同样,我们也可以使用QDataStream去读写原生的未编码的二进制数据。QDataSt
2017-03-20 14:24:43 38263 3
原创 QCoreApplication
我们都自动,Qt是一个开源的C++库,主要用来开发GUI程序,但同时,它也支持控制台程序的开发。并且,这里的控制台程序又分为Qt控制台程序和纯C++控制台程序。其中,C++控制台程序就没什么好说的了,就是我们大学的入门程序了,使用cout、stl这样标准的C++组件;而Qt控制台程序是和Qt GUI相对的一种程序,它处理可以进行一般的打印输出外,也可以像GUI程序一样,支持事件循环、信号和槽的特性
2017-03-20 09:54:28 23312
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人