互联网挖掘者
简述 本节介绍如何使用geometry属性保存和恢复窗口的几何形状。在Windows中,基本上是存储QWindow::geometry()的结果,并在下次会话调用show()之前,调用QWindow::setGeometry()。 在X11中,这可能无法工作,因为一个不可见的窗口没有边框。后来窗口管理器将装饰窗口。当这种情况发生时,窗口朝向屏幕的底部/右下角移动取决于装饰
简述 当使用Qt创建用户界面时,特别是那些带有特殊控制和特征的界面时,开发者通常需要创建新数据类型来扩展或替换Qt现有的的值类型集合。 标准类型,比如:QSize、QColor和QString都可以被存储到QVariant对象中,在基于QObject的类中可用作属性的类型,并且可以在信号-槽通信时发射。 下面,我会创建一个自定义类型,并且说明如何将它集成到Qt的对象模型
简述 QObjects在一个对象树中组织他们自己。当创建一个QObject时,如果使用了其他对象作为其父对象,那么,它就会被添加到父对象的children()列表中。这样一来,当父对象被销毁时,这个QObject也会被销毁。事实表明,这个机制非常适合于管理GUI对象。例如:一个QShortcut(键盘快捷键)对象是相关窗口的一个子对象,所以,当用户关闭了这个窗口时,快捷键也
简述 在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来自配置文件、注册表、数据库、或者是Server。 无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分都会被用到,例如:单击一个用户头像,显示该用户的详细信息(等级、昵称、姓名、个人说明)。 简述 常见接口 数据源 setData和data 单独存储 整体存储 set
简述 QScrollArea提供了一个滚动视图到另一个部件。 滚动区域用于显示一个画面中的子部件的内容。如果部件超过画面的大小,视图可以提供滚动条,这样就都可以看到部件的整个区域。 简述 基本使用 对齐方式 调整部件大小 手动调整 自动调整 获取与移除部件 获取 移除 基本使用 子部件必须使用setWidget()指定,例如: QLab
简述 QDateEdit类提供了一个部件,用于编辑日期。QTimeEdit类提供了一个部件,用于编辑时间。 简述 详细描述 基本使用 各司其职 莫强求 更多参考 详细描述 QDateEdit和QTimeEdit均继承自QDateTimeEdit,许多特性和功能都有QDateTimeEdit提供。这些都是相关属性: QDateEdit da
简述 QDateTime类提供了一个部件,用于编辑日期和时间。 QDateTimeEdit允许用户编辑日期,通过使用键盘或箭头键来增加和减少日期和时间值。箭头键可以在QDateTimeEdit内进行部分移动,日期和时间的格式按照setDisplayFormat()设置的显示。 简述 基本使用 效果 源码 日期时间格式 效果 源码 日期时间范围 效果
简述 常用的软件基本都有换肤功能,例如:QQ、360、迅雷等。换肤其实很简单,并没有想象中那么难,利用前面分享过的QSS系列文章,沃我们完全可以实现各种样式的定制! 简述 实现原理 效果 新建QSS文件 编写QSS代码 加载QSS 更多参考 实现原理 新建多个QSS文件 为各个QSS文件编写对应的样式代码 换肤时,进行全局切换 效果
简述 QLocalServer提供了一个基于本地socket的server。 QLocalServer可以接受来自本地socket的连接。通过调用listen(),让server监听来自特定key的连接。 调用nextPendingConnection()来接受一个挂起(等待)的连接作为一个已连接的QLocalSocket。函数返一个QLocalSocket指针,可以被
简述 QLocalSocket类提供了一个本地socket。 在Windows中,这是一个命名管道;在Unix中,这是一个本地网域socket。 如果发生错误,socketError()会返回错误的类型,errorString()则返回人类可读的错误描述。 虽然QLocalSocket是一个事件循环使用而设计,它也可以不被如此使用。这种情况下,必须使用 waitF
简述 QProgressBar部件提供了一个水平或垂直进度条。 进度条用于给用户操作一个进度指示,并向它们说明应用程序仍在运行。 简述 详细描述 读取方向 进度方向 效果 源码 文本显示 效果 源码 繁忙指示 效果 源码 QSS 详细描述 可以通过setRange()来设置进度的最小值和最大值(取值范围),也可使用setMinimum(
简述 QSlider部件提供了一个垂直或水平滑动条。 滑块是一个用于控制有界值的典型部件。它允许用户沿水平或垂直方向移动滑块,并将滑块所在的位置转换成一个合法范围内的值。 简述 详细描述 刻度位置 基本使用 效果 源码 QSS 刻度位置及间隔 效果 源码 详细描述 QSlider很少有自己的函数,大部分功能在QAbstractSlid
简述 QSpinBox和QDoubleSpinBox均派生自QAbstractSpinBox。 QSpinBox旨在处理整数和离散值(例如:月份名称),QDoubleSpinBox则用于处理浮点值。他们之间的区别就是处理数据的类型不同,其他功能都基本相同。 QDoubleSpinBox的默认的精度是2位小数,但可以通过setDecimals()来改变。 下面主要以QS
简述 在Qt项目开发过程中,往往需要对程序的一些信息进行控制,比如:打印日志、调试信息等,便于我们后期查找、跟踪及定位问题。 下面,我们来分享下常用的几种方式。 简述 示例代码 应用程序输出 控制台输出 重定向至文件 示例代码 我们简单地写一些测试代码,用qDebug输出一些基本信息。 #include <QApplication&g
简述 QNetworkAddressEntry类由网络接口支持,存储了一个IP地址,子网掩码和广播地址。 每个网络接口可以包含零个或多个IP地址,进而可以关联到一个子网掩码和/或一个广播地址(取决于操作系统的支持)。 这个类代表一个这样的组。 简述 常用接口 使用 更多参考 常用接口 QHostAddress broadcast() co
简述 QHostAddress类提供一个IP地址。 这个类提供一种独立于平台和协议的方式来保存IPv4和IPv6地址。 QHostAddress通常与QTcpSocket、QTcpServer、QUdpSocket一起使用,来连接到主机或建立一个服务器。 可以通过setAddress()来设置一个主机地址,使用toIPv4Address()、toIPv6Address
简述 Qt Network模块提供的类允许编写 TCP/IP clients 和 servers。 其中包含一些低级别的类,例如:QTcpSocket、QTcpServer 和 QUdpSocket,表示低级的网络概念;一些高级别的类,例如:QNetworkRequest、QNetworkReply 和 QNetworkAccessManager,使用常见的协议执行网络操
简述 Qt Charts 的横空出世标识着 QWT、QCustomPlot …… 时代的终结,是时候向他们做一个简单的告别了。Qt Charts - 强大并极具吸引力,从现在开始,让我们顺势拥抱灿烂的明天 。 简述 安装配置 基本示例 入门指南 基本用法 QChartView QChart QGraphicsScene QChart 安装配置 Q
简述 为了让程序尽快响应用户操作,在开发应用程序时经常会使用到线程。对于耗时操作如果不使用线程,UI界面将会长时间处于停滞状态,这种情况是用户非常不愿意看到的,我们可以用线程来解决这个问题。 前面,已经介绍了QThread常用的两种方式: Worker-Object 子类化QThread 下面,我们来看看子类化QThread在日常中的应用。 简述 子类化Q
简述 接触过IOS系统的童鞋们应该对开关按钮很熟悉,在设置里面经常遇到,切换时候的滑动效果比较帅气。 通常说的开关按钮,有两个状态:on、off。 下面,我们利用自定义控件来实现一个开关按钮。 简述 原理 源码 示例 效果 源码 更多参考 原理 重写鼠标按下事件(mousePressEvent)、释放事件(mouseReleaseEve
简述 VMware可以创建多个虚拟机,每个虚拟机上都可以安装各种类型的操作系统。安装方法也有很多种。下面,主要以ISO镜像安装为例,介绍CentOS 7.x的安装过程及相关的参数设置。 简述 创建虚拟机 安装CentOS 重启系统 注意事项 更多参考 创建虚拟机 打开VMware,单击右侧的【创建新虚拟机】选项,开始创建虚拟机。 选择【稍后安
简述 在用CSDN的过程中,发现了许许多多的Bug。之前没有做记录,直接反馈给客服了,有时没图说得不太清楚,现在不都追求有图有真相么O(∩_∩)O~,所以在此记录一下。 作为程序员的一份子,Bug对我们来说太正常不过了。但是,此刻我只站在客户的角度提问题,希望各位同行们尽快修复,给用户一个好的体验。。。 爱你,才会找你茬(序员何必为难序员╮(╯▽╰)╭)! 简
简述 在Qt编程过程中,通常会有多个部件嵌套,而大多数部件都有父子依赖关系,但是有些情况下不能直接引用子部件,这时我们可以通过父部件来findChild -“查找孩子”。 简述 查找选项 findChild 描述 示例 分析 效果 源码 可能情况 查找选项 枚举Qt::FindChildOption: Qt::FindChildOp
简述 安装CentOS 6.x操作系统后,开机时发现没有网络,最后发现系统启动时未激活网卡 - 因为只有在激活状态的网卡才能去连接网络,进行网络通讯。 简述 激活网卡eth0 激活网卡eth0 执行“ifconfig“命令发现只有lo网卡,并没有eth0。 重启网络服务,发现命令提示中并没有开启eth0的提示。 修改网卡配置文件“vi /etc
简述 VMware可以创建多个虚拟机,每个虚拟机上都可以安装各种类型的操作系统。安装方法也有很多种。下面,主要以ISO镜像安装为例,介绍CentOS 6.x的安装过程及相关的参数设置。 简述 创建虚拟机 安装CentOS 更多参考 创建虚拟机 打开VMware,单击右侧的【创建新虚拟机】选项,开始创建虚拟机。 选择【稍后安装操作系统】,单击【
简述 CentOS(Community Enterprise Operating System - 社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两
简述 QtConcurrent::map()、QtConcurrent::mapped() 和 QtConcurrent::mappedReduced() 函数对一个序列中(例如:QList、QVector)的项目并行地进行计算。QtConcurrent::map() 就地修改一个序列,QtConcurrent::mapped() 返回一个包含修改内容的新序列,QtConc
简述 QtConcurrent 命名空间提供了高级 API,使得可以在不使用低级线程原语(例如:互斥、读写锁、等待条件或信号量)的情况下编写多线程程序,使用 QtConcurrent 编写的程序根据可用的处理器核心数自动调整所使用的线程数。这意味着,当在未来部署多核系统时,现在编写的应用程序将继续适应。 简述 用法 Qt Concurrent 单词统计 更多参考
简述 QPainter 提供了 2D 绘图的常用操作,QTimer 提供了定时器功能,将两者相结合,可以做出很多的自定义特效绘制。 下面,来实现一个每天都要接触的东西 - 时钟。包含了常见的所有功能:时针、分针、秒针。。。 简述 实现方式 示例 效果 源码 实现方式 由于时钟是妙级更新的,所以我们需要定时刷新,时钟本身则使用之前讲过的 QP
简述 QObject是所有Qt objects的基类,在Qt中提供了基础定时器的支持。使用QObject::startTimer(),你可以传递一个毫秒数间隔作为参数启动一个定时器。该函数返回一个唯一的整数timer ID,计时器会定时触发,直到你显式地传递timer ID调用QObject::killTimer()。 对于这种工作机制,应用程序必须在事件循环(event
简述 QThread继承自QObject,它发射信号(signals)以表明线程执行开始或结束,并提供了一些槽函数(slots)。 更有趣的是,QObjects可以在多线程中使用,发射信号以在其它线程中调用槽函数,并且向“存活”于其它线程中的对象发送事件(post events)。这是可能的,因为每一个线程都拥有它自身的事件循环(event loop)。 简述
简述 本篇文章中,术语“可重入性”和“线程安全”被用来标记类与函数,以表明它们如何被应用在多线程应用程序中。 一个线程安全的函数可以同时被多个线程调用,甚至调用者会使用共享数据也没有问题,因为对共享数据的访问是串行的。 一个可重入函数也可以同时被多个线程调用,但是每个调用者只能使用自己的数据。 因此,一个线程安全的函数总是可重入的,但一个可重入的函数并不一定是线程安全
何为线程 线程与并行处理任务息息相关,就像进程一样。那么,线程与进程有什么区别呢?当你在电子表格上进行数据计算的时候,在相同的桌面上可能有一个播放器正在播放你最喜欢的歌曲。这是一个两个进程并行工作的例子:一个进程运行电子表格程序;另一个进程运行一个媒体播放器。这种情况最适合用多任务这个词来描述。进一步观察媒体播放器,你会发现在这个进程内,又存在并行的工作。当媒体播放器向音频
简述 QLineEdit是一个单行文本输入框。 QLineEdit允许用户输入和编辑单行纯文本,提供了很多有用的编辑功能,包括:撤消和重做、剪切和粘贴、以及拖放(见setDragEnabled())。 通过改变输入框的echoMode(),同时也可以设置为一个“只写”字段,用于输入密码等。 文本的长度可以被限制为maxLength(),可以使用一个validator(
简述 Qt提供一个类似于其它编译器供应商提供的复杂属性系统(Property System)。然而,作为一个编译器和平台无关的库,Qt不能够依赖于那些非标准的编译器特性,比如:__property或者[property]。Qt的解决方案适用于Qt支持平台下的任何标准C++编译器。它依赖于元对象系统(Meta Object Sytstem) - 通过信号和槽提供对象间通讯机制
简述 Qt的元对象系统(Meta-Object System)提供了信号与槽机制,可用于对象间通信、运行时类别信息和动态属性系统。 元对象系统基于三个方面: QObject类:为objects提供了一个可以利用元对象系统的基类。 Q_OBJECT宏: 在类的私有部分声明这个宏可以启用元对象特性,例如:动态属性、信号与槽。 Meta-Object编译器(moc): 为每
简述 QRadioButton部件提供了一个带有文本标签的单选框(单选按钮)。 QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。单选框通常呈现给用户一个“多选一”的选择。也就是说,在一组单选框中,一次只能选中一个单选框。 简述 详细描述 示例 效果 源码 样式 更多参考 详细描述 单
简述 QSystemTrayIcon类为应用程序在系统托盘中提供一个图标。 现代操作系统通常在桌面上提供一个特殊的区域,称为系统托盘或通知区域,长时间运行的应用程序可以显示图标和短消息。 简述 内容 详细描述 共有类型 共有函数 公有槽函数 信号 静态共有函数 示例 效果 源码 内容 详细描述 要检查系统托盘是否存在在用户的桌面
简述 Qt 的资源系统用于存储应用程序的可执行二进制文件,它采用平台无关的机制。当你的程序总需要这样的一系列文件(图标、翻译文件等)并且不想冒丢失某些文件的风险时,这就显得十分有用。 资源系统基于 qmake、rcc(Qt 资源编译器) 和 QFile 之间的紧密合作。 简述 资源集合文件qrc 外部二进制资源 内编译资源 压缩 在程序中使用资源 在库中使用资源
简述 Qt中关于样式的使用很常见,为了降低耦合性(与逻辑代码分离),我们通常会定义一个QSS文件,然后编写各种部件(例如:QLable、QLineEdit、QPushButton)的样式,最后使用QApplication进行样式加载,这样,就可以让整个应用程序就共享同一个样式。 简述 新建QSS文件 编写QSS 加载QSS 实现原理 更多参考 新建Q
简述 Qt助手中有关于各种部件的QSS详细讲解,资源很丰富,请参考:Qt Style Sheets Examples。 白色靓丽 - 一款漂亮的QSS风格。 你可以直接使用,也可以随意转载,但请务必保留版权声明和许可声明,请参考“声明”部分。 简述 声明 效果 QSS 更多参考 声明 被授权人权利 被授权人有权利使用、复制、修改、合并、出版
简述 Qt助手中有关于各种部件的QSS详细讲解,资源很丰富,请参考:Qt Style Sheets Examples。 黑色炫酷 - 一款漂亮的QSS风格。 之前博客中分享了很多关于Qt的样式效果,几乎都是基下面此样式。 你可以直接使用,也可以随意转载,但请务必保留版权声明和许可声明,请参考“声明”部分。 简述 声明 效果 QSS 更多参考 声
简述 QSizePolicy类是一个描述布局水平和垂直方向调整策略的属性。 大小策略会影响布局引擎处理部件的方式,部件加入布局以后,会返回一个QSizePolicy,描述了其水平和垂直方向的大小策略。可以通过QWidget::sizePolicy属性为特定部件设置大小策略。 简述 详细描述 成员类型 公共函数 示例 控制类型 QSizePolicy 默认效果
简述 坐标系统由 QPainter 类控制,再加上 QPaintDevice 和 QPaintEngine,就形成了 Qt 的绘图体系。 QPainter:用于执行绘图操作 QPaintDevice:二维空间的抽象层,可以使用 QPainter 在它上面进行绘制。 QPaintEngine:提供了统一的接口,用于 QPainter 在不同的设备上进行绘制。 QPain
简述 图形视图(Graphics View)提供了一个平台,用于大量自定义2D图元的管理与交互,并提供了一个视图部件(view widget)来显示可以缩放和旋转的图元。 框架包括一个事件传播架构,支持场景(Scene)中的图元(Item)进行精确的双精度交互功能。图元可以处理键盘事件、鼠标按下、移动、释放和双击事件,同时也能跟踪鼠标移动。 图形视图使用一个BSP(Bi
简述 QRoundProgressBar类能够实现一个圆形进度条,继承自QWidget,并且有和QProgressBar类似的API接口。 简述 详细说明 风格 颜色 字体 共有函数 共有槽函数 详细说明 主要有以下特性: 圆形进度条控件 高度可定制的 源码下载: Qt Circular Progress Bar Widget QRoundP
简述 根据之前的二位绘图,我们可以很轻松的进行文本的绘制,如果需要一些特效,比如:文本闪烁。我们就必须借助其它辅助类来完成。 简述 原理 实现 效果 源码 原理 主要涉及两个辅助类: QFontMetrics 用于获取文本字体的像素高度与宽度 QBasicTimer 定时器,用于更新文本绘制。 原理: 利用QBasicTimer
简述 QCustomPlot是一个基于Qt C++的图形库,用于绘制和数据可视化 - 制作漂亮的2D图 - 曲线图、趋势图、坐标图、柱状图等,并为实时可视化应用程序提供高性能服务。它没有进一步的依赖关系,并有着良好的文档记录。 QCustomPlot可以导出为各种格式,比如:PDF文件和位图(如:PNG、JPG、BMP)。 可在自己的项目中直接使用两个源文件(qcust
简述 在Qt中,事件就是对象,派生自QEvent抽象类,用来表示在应用程序中发生的事件,或是应用程序需要处理的外部活动产生的事件。 Events可以被任何QObject派生的子类实例对象接收和处理,但它们是关联到特定控件的。下面,我们主要介绍event在典型应用程序中是如何发送及处理的。 简述 事件如何发送 事件类型 事件处理程序 事件过滤器 发送事件
简述 Qter们经常遇到由于耗时操作造成GUI阻塞的问题。其实,这个问题并不难克服,可以采用许多不同的方式,下面我会列举一些可选范围,根据使用情况进行处理。 简述 执行耗时操作 手动事件处理 使用一个工作线程 等待本地事件循环 逐步地解决问题 并行编程 总结 更多参考 执行耗时操作 我们需要做的第一件事就是确定能够解决问题的范围。上述问题可能会以两