自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青春不老,奋斗不止!

纯正开源之美,有趣、好玩、靠谱 ^_^

原创 Qt 之 Concurrent Map 和 Map-Reduce

简述QtConcurrent::map()、QtConcurrent::mapped() 和 QtConcurrent::mappedReduced() 函数对一个序列中(例如:QList、QVector)的项目并行地进行计算。QtConcurrent::map() 就地修改一个序列,QtConcurrent::mapped() 返回一个包含修改内容的新序列,QtConcurrent::mapped

2016-07-29 18:37:40 8985 3

原创 Qt 之 Concurrent 框架

简述QtConcurrent命名空间提供了一个高级API来编写多线程程序,而无需使用低级线程原语,例如:互斥、读写锁、等待条件或信号量。使用QtConcurrent编写的程序使用的线程数量会自动根据可用的处理器数量进行调整,这意味着,当在未来部署多核系统时,今天编写的应用程序将继续适应。QtConcurrent为并行列表处理包含了函数式编程风格APIs,包括用于共享内存(非分布式)系统的一

2016-07-29 16:32:38 12713 6

原创 Qt 之绘制时钟

QPainter 提供了 2D 绘图的常用操作,QTimer 提供了定时器功能,将两者相结合,可以做出很多的自定义特效绘制。下面,来实现一个每天都要接触的东西 - 时钟。包含了常见的所有功能:时针、分针、秒针。。。

2016-07-29 13:55:26 19408 17

原创 Qt 之 Timers

简述QObject是所有Qt objects的基类,在Qt中提供了基础定时器的支持。使用QObject::startTimer(),你可以传递一个毫秒数间隔作为参数启动一个定时器。该函数返回一个唯一的整数timer ID,计时器会定时触发,直到你显式地传递timer ID调用QObject::killTimer()。对于这种工作机制,应用程序必须在事件循环(event loop)中运行,使用QApp

2016-07-29 12:37:41 7870 2

原创 Qt 之 Threads 和 QObjects

简述QThread继承自QObject,它发射信号(signals)以表明线程执行开始或结束,并提供了一些槽函数(slots)。更有趣的是,QObjects可以在多线程中使用,发射信号以在其它线程中调用槽函数,并且向“存活”于其它线程中的对象发送事件(post events)。这是可能的,因为每一个线程都拥有它自身的事件循环(event loop)。简述QObject可重入性每个线程的事件循环

2016-07-28 14:23:36 9344 4

原创 Qt 之可重入与线程安全

简述本篇文章中,术语“可重入性”和“线程安全”被用来标记类与函数,以表明它们如何被应用在多线程应用程序中。一个线程安全的函数可以同时被多个线程调用,甚至调用者会使用共享数据也没有问题,因为对共享数据的访问是串行化的(serialized)。一个可重入函数也可以同时被多个线程调用,但是每个调用者只能使用自己的数据。因此,一个线程安全的函数总是可重入的,但一个可重入的函数并不一定是线程安全的。扩展

2016-07-27 19:22:40 7865 8

原创 Qt 之线程基础

何为线程线程与并行处理任务息息相关,就像进程一样。那么,线程与进程有什么区别呢?当你在电子表格上进行数据计算的时候,在相同的桌面上可能有一个播放器正在播放你最喜欢的歌曲。这是一个两个进程并行工作的例子:一个进程运行电子表格程序;另一个进程运行一个媒体播放器。这种情况最适合用多任务这个词来描述。进一步观察媒体播放器,你会发现在这个进程内,又存在并行的工作。当媒体播放器向音频驱动发送音乐数据的时候,用户

2016-07-27 17:42:27 12638 3

原创 Qt 之 QLineEdit

简述QLineEdit是一个单行文本输入框。QLineEdit允许用户输入和编辑单行纯文本,提供了很多有用的编辑功能,包括:撤消和重做、剪切和粘贴、以及拖放(见setDragEnabled())。通过改变输入框的echoMode(),同时也可以设置为一个“只写”字段,用于输入密码等。文本的长度可以被限制为maxLength(),可以使用一个validator()或inputMask()来任意限制文本

2016-07-27 15:52:46 37541 29

原创 Qt 之属性系统

简述Qt提供一个类似于其它编译器供应商提供的复杂的属性系统(Property System)。然而,作为一个编译器和平台无关的库,Qt不能够依赖于那些非标准的编译器特性,比如:__property或者[property]。Qt的解决方案适用于Qt支持平台下的任何标准C++编译器。它依赖于元对象系统(Meta_Object Sytstem) - 通过信号和槽提供对象间通讯机制。简述声明属性的要求通

2016-07-25 16:35:32 15576 9

原创 Qt 之 Meta-Object 系统

简述Qt的元对象系统(Meta-Object System)提供了信号与槽机制,可用于对象间通信、运行时类别信息和动态属性系统。元对象系统基于三个方面:QObject类:为Objects提供了一个可以利用元对象系统的基类。Q_OBJECT宏: 在类的私有部分声明这个宏可以启用元对象特性,例如:动态属性、信号与槽。Meta-Object编译器(moc): 为每个QObject子类生成必要的代码来

2016-07-25 10:44:51 11811 4

原创 Qt 之 QRadioButton

简述QRadioButton部件提供了一个带有文本标签的单选框(单选按钮)。QRadioButton是一个可以切换选中(checked)或未选中(unchecked)的选项按钮,。单选框通常呈现给用户一个“多选一”选择。在一组单选框中,一次只能选中一个单选框,如果你需要对属于同一父部件的单选框添加多个互斥按钮组,需要将它们放进一个QButtonGroup中。简述详细描述示例效果源码样式更

2016-07-24 18:48:56 39935 9

原创 Qt 之 QSystemTrayIcon

简述QSystemTrayIcon类为应用程序在系统托盘中提供一个图标。现代操作系统通常在桌面上提供一个特殊的区域,称为系统托盘或通知区域,长时间运行的应用程序可以显示图标和短消息。简述内容详细描述共有类型共有函数共有槽函数信号静态共有函数示例效果源码内容详细描述要检查系统托盘是否存在在用户的桌面上,调用QSystemTrayIcon::isSystemTrayAvailable

2016-07-24 17:03:10 12157 12

原创 Qt 之资源系统

简述Qt的资源系统用于存储应用程序的可执行二进制文件,它采用平台无关的机制。当你的程序总需要这样的一系列文件(图标、翻译文件等)并且不想冒丢失某些文件的风险时,这就显得十分有用。资源系统基于 qmake、rcc(Qt资源编译器) 和 QFile 之间的紧密合作。简述资源集合文件qrc外部二进制资源内编译资源压缩在程序中使用资源在库中使用资源更多参考资源集合文件(.qrc)与程序相关的资

2016-07-22 15:31:37 12236 4

原创 Qt 之加载 QSS 文件

简述Qt中关于样式的使用很常见,为了降低耦合性(与逻辑代码分离),我们通常会定义一个QSS文件,然后编写各种部件(比如:QLable、QLineEdit、QPushButton)的样式,最后使用QApplication进行样式加载,这样,就可以让整个应用程序就共享同一个样式。简述新建QSS文件编写QSS加载QSS实现原理更多参考新建QSS文件首先,新建一个后缀名为qss的文件,比如:sty

2016-07-22 11:52:57 38697 15

原创 Qt 之 QSS(白色靓丽)

简述Qt助手中有关于各种部件的QSS详细讲解,资源很丰富,请参考:Qt Style Sheets Examples。之前博客中分享了很多关于Qt的样式效果,几乎都是基下面这个样式 - 白色靓丽,一款漂亮的QSS风格。你可以直接使用,也可以随意转载,请务必保留版权声明和许可声明。请参考“声明”部分。简述声明效果QSS更多参考声明被授权人权利被授权人有权利使用、复制、修改、合并、出版发行、

2016-07-22 10:09:23 45613 73

原创 Qt 之 QSS(黑色炫酷)

简述Qt助手中有关于各种部件的QSS详细讲解,资源很丰富,请参考:Qt Style Sheets Examples。之前博客中分享了很多关于Qt的样式效果,几乎都是基下面这个样式 - 黑色炫酷,一款漂亮的QSS风格。你可以直接使用,也可以随意转载,请务必保留版权声明和许可声明。请参考“声明”部分。简述声明效果QSS更多参考声明被授权人权利被授权人有权利使用、复制、修改、合并、出版发行、

2016-07-22 10:04:12 66044 182

原创 Qt 之 QSizePolicy

简述QSizePolicy类是一个描述布局水平和垂直方向调整策略的属性。一个部件的大小策略是以不同方式改变其大小的意愿表达式,并会影响部件如何被布局引擎所处理。加入布局以后,每个部件会返回一个QSizePolicy,描述了其水平和垂直方向的大小策略。可以通过QWidget::sizePolicy属性为特定部件设置大小策略。简述详细描述成员类型公共函数示例控制类型QSizePolicy默

2016-07-21 20:12:43 33878 8

原创 Qt 之坐标系统

坐标系统由 QPainter 类控制,再加上 QPaintDevice 和 QPaintEngine,就形成了 Qt 的绘图体系。- QPainter:用于执行绘图操作- QPaintDevice:二维空间的抽象层,可以使用 QPainter 在它上面进行绘制。- QPaintEngine:提供了统一的接口,用于 QPainter 在不同的设备上进行绘制。

2016-07-21 15:55:54 13988 1

原创 Qt 之图形视图框架

简述图形视图(Graphics View)提供了一个用于管理和交互大量自定义的二维图形对象(Item),以及一个支持缩放和旋转操作的视图部件用于显示这些视图项。框架包括一个事件传播架构,支持scene中的items进行精确的双精度交互功能。Items(图形元素)可以处理键盘事件、鼠标按下、移动、释放和双击事件,同时也能跟踪鼠标移动。Graphics View使用一个BSP(Binary Space

2016-07-20 16:59:13 28084 20

原创 Qt 之 QRoundProgressBar(圆形进度条)

简述QRoundProgressBar类能够实现一个圆形进度条,并且有和QProgressBar类似的API接口。简述详细说明风格共有函数共有槽函数详细说明QRoundProgressBar继承自QWidget,主要由以下特性:圆形进度条控件高度可定制的可在Qt Circular Progress Bar Widget或QRoundProgressBar源码中进行下载。下载完后,进行解

2016-07-19 17:32:53 16871 8

原创 Qt 之绘制闪烁文本

简述根据之前的二位绘图,我们可以很轻松的进行文本的绘制,如果需要一些特效,比如:文本闪烁。我们就必须借助其它辅助类来完成。简述原理实现效果源码原理主要涉及两个辅助类:QFontMetrics 用于获取文本字体的像素高度与宽度QBasicTimer 定时器,用于更新文本绘制。原理:利用QBasicTimer进行定时刷新。文本绘制时,使用QColor来设置色调(H)、饱和度(S)、

2016-07-19 15:02:27 9464 6

原创 Qt 之 QCustomPlot(图形库)

简述QCustomPlot是一个基于Qt C++的图形库,用于绘制和数据可视化 - 制作漂亮的2D图 - 曲线图、趋势图、坐标图、柱状图等,并为实时可视化应用程序提供高性能。它没有进一步的依赖关系,并有着良好的文档记录。QCustomPlot可以导出为各种格式,比如:PDF文件和位图(如:PNG、JPG、BMP)。可在自己的项目中直接使用两个源文件,或预先编译成库。简述下载配置文档集成到Qt

2016-07-19 14:06:21 24388 5

原创 Qt 之事件系统

简述在Qt中,事件就是对象,派生自QEvent抽象类,用来表示在应用程序中发生的事件,或是应用程序需要处理的外部活动产生的事件。Events可以被任何QObject派生的子类实例对象接收和处理,但它们是关联到特定控件的。下面,我们主要介绍event在典型应用程序中是如何发送及处理的。简述事件如何发送事件类型事件处理程序事件过滤器发送事件更多参考事件如何发送通常情况下,当一个事件发生时,Q

2016-07-17 16:22:55 13075 3

原创 Pictures of Ascii Art

简述指尖上的艺术 - 通过键盘上韵律般的敲敲打打,一幅幅美轮美奂的艺术作品便跃然于屏。这样的画作,包含了无穷的创意,糅合了现代计算机科技与传统绘画艺术,难道还有比这更令人陶醉的美妙事物吗?简述天使异形动物婴儿鸟类和昆虫生日建筑卡通服饰电脑几何图形万圣节岛屿Love情侣男人机器人骷髅运动文本运输卡车名人女人其它更多参考天使

2016-07-17 10:33:16 4631 2

原创 Qt 之保持 GUI 响应

简述Qter们经常遇到由于耗时操作造成GUI阻塞的问题。其实,这个问题并不难克服,可以采用许多不同的方式,下面我会列举一些提可选范围,可以根据使用情况进行处理。简述执行长时间操作手动事件处理使用一个工作线程等待本地事件循环逐步地解决问题并行编程总结更多参考执行长时间操作要做的第一件事就是确定问题的区域和能被解决的轮廓路径。上述问题可以采取两种形式之一。第一个变化是当一个程序执行计算密

2016-07-13 21:13:44 14773 10

原创 Qt 之 QSS(QDarkStyleSheet)

简述关于样式,前面介绍了很多内容,下面分享一个深色样式。简述效果图QSS更多参考效果图QSS/* * The MIT License (MIT) * * Copyright (c) <2013-2014> <Colin Duquesnoy> * * Permission is hereby granted, free of charge, to any person obtaini

2016-07-13 16:11:26 14693 11

原创 超有意思的代码注释

程序员情怀,你值得拥有!Code is far away from bug with the animal protecting...

2016-07-13 14:07:44 7081 2

原创 Qt 之窗口动画(下坠、抖动、透明度)

简述前面几节中我们介绍了关于动画的基本使用,有属性动画、串行动画组、并行动画组。这节我们来实现一些特效,让交互更顺畅。简述示例效果源码更多参考示例下面,我们以geometry、pos、windowOpacity属性为例,来实现窗体的下坠、抖动、透明度效果。效果源码下坠效果:通过计算桌面的宽度、高度,来设置动画的起始值和结束值。void MainWindow::onDropWindow(){

2016-07-12 19:10:14 23897 3

原创 Qt 之 QPauseAnimation

简述QPauseAnimation类为QSequentialAnimationGroup提供了一个暂停。如果你想为QSequentialAnimationGroup动画之间添加延迟,可以插入一个QPauseAnimation。它没有任何动画,但当在指定的毫秒数之内开始运行时不会结束。可以通过构造函数指定暂停的时间,也可以通过setDuration()设置。没必要自己建立一个QPauseAnimati

2016-07-12 09:41:50 5647 1

原创 Qt 之 QParallelAnimationGroup

简述QParallelAnimationGroup类提供动画的并行组。QParallelAnimationGroup - 一个动画容器,当它启动的时候它里面的所有动画也启动,即:并行运行所有动画,当持续时间最长的动画完成时动画组也随之完成。简述详细描述示例效果源码更多参考详细描述QParallelAnimationGroup可以被当做任何其它的QAbstractAnimation动画,例如

2016-07-11 19:35:49 8294 1

原创 Qt 之 QSequentialAnimationGroup

简述QSequentialAnimationGroup类提供动画的串行组。QSequentialAnimationGroup是一个串行运行动画的QAnimationGroup,在另一个动画播放结束之后,开启一个新的动画,根据添加到动画组的顺序(使用addAnimation() 或 insertAnimation())来播放动画,当最后一个动画完成以后,动画组随之完成。在动画组中每一个时刻最多只有一个

2016-07-11 19:04:08 7525 2

原创 Qt 之 QPropertyAnimation

简述QPropertyAnimation类定义了Qt的属性动画。QPropertyAnimation以Qt属性做差值,作为属性值存储在QVariants中,该类继承自QVariantAnimation,并支持基类相同的元类型动画。声明属性的类必须是一个QObject,为了能够让属性可以用做动画效果,必须提供一个setter(这样,QPropertyAnimation才可以设置属性的值)。注意:这能够

2016-07-11 17:39:28 19753 13

原创 Qt 之添加 Windows 资源文件(.rc文件)

简述在Windows下使用Qt时,通常会用到Windows的资源文件 - 为exe设置信息,其中包括:文件说明、产品名称、产品版本、版权等信息。。。由于是Windows平台相关的东西,Qt助手中对于rc文件几乎没有任何介绍(在Setting the Application Icon一文中简单提到)。简述资源信息效果实现图标参数示例VERSIONINFO格式化VERSIONINFO参

2016-07-11 15:34:11 20097 2

原创 开源软件

简述开放源代码软件(Open Source Software),简称:OSS或开源软件。这种“公开”正是促使人们使用它的原因,因为这意味着用户可以自由的使用、复制、散发以及修改源码(补充漏洞,按具体需求定制功能)。与其相对是私有/专属软件,如:来自微软和苹果的软件,这类软件的源代码是保密的,只有公司的开发人员才可以改动代码。简述为什么会有开源软件开源软件的发展历程开源软件的特点开源大家族无

2016-07-10 15:13:44 3186 2

原创 Linux 发展史

简述Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生林Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想

2016-07-10 00:00:07 21113 7

原创 Qt 之镜像旋转

简述Qt中可以对图片进行任何处理,改变亮度、灰度、透明度、大小、形状等,当然也可以进行镜像旋转! 简单的几行代码,有时就可以事半功倍。。。甚至图片不用经过美工处理就可以直接拿来使用!简述实现原始效果接口效果实现原始效果:接口关于镜像旋转,QImage中有对应的接口,可以通过设定水平、垂直方向旋转:QImage QImage::mirrored(bool horizontal = fals

2016-07-08 10:56:57 10638 4

原创 Qt 之 QCheckBox

简述QCheckBox继承自QAbstractButton,它提供了一个带文本标签的复选框。QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮。这是因为它们都可以在开(选中)或者关(未选中)之间切换。区别是对用户选择的限制:单选框定义了“多选一”的选择,而复选框提供的是“多选多”的选择。尽管在技术上可以通过复选框来实现单选框的行为,反之亦然,但还是强烈建议使用众所周知的约定

2016-07-07 20:23:30 74100 20

原创 Qt 之动画框架

简述Qt动画框架旨在为创建动画和平滑的GUI提供了一种简单的方法。通过Qt动画属性,该框架为部件和其它QObject对象的动画操作提供了非常大的自由性,框架也可以被用于图形视图框架中,动画框架中许多可用的概念也可以用于Qt Quick,它提供了一种声明式的方式定义动画。大部分关于动画框架学到的知识都可以应用于Qt Quick。本篇,我们阐述了Qt动画框架的基本结构。同时,会展示最常见的技术示例,用于

2016-07-07 15:14:09 19601 5

原创 Qt 之 QFileSystemWatcher

简述QFileSystemWatcher类用于提供监视文件和目录修改的接口。QFileSystemWatcher通过监控指定路径的列表,监视文件系统中文件和目录的变更。调用addPath()函数可以监控一个特定的文件或目录。如果需要监控多个路径,可以使用addPaths()。通过使用removePath()和removePaths()函数来移除现有路径。QFileSystemWatcher检查添加到

2016-07-07 11:19:55 17634 8

原创 Qt 之 qSetMessagePattern

简述改变默认的消息处理输出。允许改变qDebug()、qWarning()、qCritical()、qFatal()的输出。简述支持的占位符示例qSetMessagePatternQT_MESSAGE_PATTERN环境变量支持的占位符支持以下占位符: 占位符 描述 %{appname} QCoreApplication::applicationName() %{categ

2016-07-06 15:23:10 6572 6

提示
确定要删除当前文章?
取消 删除