
QT教程
文章平均质量分 73
Chiang木
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
QT知识点总结(二)
1、如果有资源位于一个库中,需要用不带有后缀的 .qrc 文件名为参数调用 Q_INIT_RESOURCE() 来强制初始化资源系统。2、可以用qobject_cast()动态转换QObject类的类型3、自定义类型需要使用Q_DECLARE_METATYPE()宏注册,以便它们的值能被保存在QVariant对象中4、QCoreApplication::sendEvent()(同步)和...原创 2019-11-21 19:30:59 · 968 阅读 · 0 评论 -
QT知识点总结(一)
QT下载地址1、设置tab键的聚焦顺序:static void QWidget::setTabOrder(QWidget * first, QWidget * second);如果不想某子部件被聚焦,可为子部件设置:setFocusPolicy(Qt::NoFocus);2、设置编辑无右键菜单:setContextMenuPolicy(Qt::NoContextMen...原创 2019-11-03 23:41:17 · 1114 阅读 · 0 评论 -
35 Qt 之绘制闪烁文本
简述根据之前的二位绘图,我们可以很轻松的进行文本的绘制,如果需要一些特效,比如:文本闪烁。我们就必须借助其它辅助类来完成。原理主要涉及两个辅助类: QFontMetrics 用于获取文本字体的像素高度与宽度 QBasicTimer 定时器,用于更新文本绘制。原理: 利用QBasicTimer进行定时刷新。 文本绘制时,...原创 2019-10-27 22:52:40 · 681 阅读 · 0 评论 -
34 Qt 之绘图之绘制时钟
简述QPainter 提供了 2D 绘图的常用操作,QTimer 提供了定时器功能,将两者相结合,可以做出很多的自定义特效绘制。下面,来实现一个每天都要接触的东西 - 时钟。包含了常见的所有功能:时针、分针、秒针。。。实现方式由于时钟是妙级更新的,所以我们需要定时刷新,时钟本身则使用之前讲过的 QPainter 来进行绘制。 使用 QTimer 定时刷新,设置超时时间...原创 2019-10-27 22:49:02 · 664 阅读 · 0 评论 -
33 Qt 之绘图之绘制卡通蚂蚁
绘制具体的效果如下所示,我们可以再进行更好的完善。源码主要分为以下三部:绘制屁股 绘制肚子 绘制头部注意:绘制的时候,由于各个部分的颜色不同,而且坐标不好定位,所以我们采用的图形覆盖的方式。void MainWindow::paintEvent(QPaintEvent *){ QPainter painter(this); painter.se...原创 2019-10-26 23:54:22 · 334 阅读 · 0 评论 -
32 Qt 之绘图之绘制一个漂亮的西瓜
简笔画我们先简单看看西瓜的基本组成,一步步进行拆分、组合。绘制效果具体的效果如下所示,我们可以再进行更好的完善。源码主要分为以下三部:绘制外圆(绿色部分) 绘制内圆(红色部分) 绘制椭圆(西瓜子)注意:绘制西瓜子的时候,由于西瓜子随机分布在西瓜中,所以我们使用了随机数来表示区域,并判断西瓜子是否在内圆中(西瓜子肯定要在西瓜内O__O”…)。voi...原创 2019-10-26 23:52:57 · 442 阅读 · 0 评论 -
31 Qt 之绘图之绘制一个漂亮的圆及圆弧
一、圆形经常地,我们会在网上看到一些列的抽奖活动,里面就有圆盘抽奖,是不是有点手痒了O(∩_∩)O~效果void MainWindow::paintEvent(QPaintEvent *){ QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); ...原创 2019-10-26 23:47:24 · 5241 阅读 · 1 评论 -
29 Qt 之图形(转换)
简述QTransform 用于指定坐标系的 2D 转换 - 平移、缩放、扭曲(剪切)、旋转或投影坐标系。绘制图形时,通常会使用。QTransform 与 QMatrix 不同之处在于,它是一个真正的 3x3 矩阵,允许视角转换,QTransform 的 toAffine() 方法允许将 QTransform 转换到 QMatrix。如果视角转换已在矩阵指定,则转换将导致数据丢失。常...原创 2019-10-26 22:56:40 · 243 阅读 · 0 评论 -
28、Qt 之图形(渐变填充)
简述QGradient 可以和 QBrush 组合使用,来指定渐变填充。Qt 目前支持三种类型的渐变填充: QLinearGradient:显示从起点到终点的渐变 QRadialGradient:以圆心为中心显示渐变 QConicalGradient:围绕一个中心点显示渐变使用 QGradientStop 类来描述渐变中过渡点的位置和颜色。例如:一个位置...原创 2019-10-26 22:42:56 · 1483 阅读 · 0 评论 -
27 Qt 之图形(QPainter 的基本绘图)
简述Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDevice、QWidget 和QPaintDevice 显示图形(线、形状、渐变等...原创 2019-10-26 22:28:46 · 2404 阅读 · 0 评论 -
26 QT坐标系统
简述坐标系统由 QPainter 类控制,再加上 QPaintDevice 和 QPaintEngine,就形成了 Qt 的绘图体系。默认坐标系统位于设备的左上角(即:坐标原点 (0, 0))。X 轴由左向右递增,Y 轴由上向下递增。 QPainter:用于执行绘图操作 QPaintDevice:二维空间的抽象层,可以使用 QPainter 在它上面进行绘制。 ...原创 2019-10-26 22:19:25 · 429 阅读 · 0 评论 -
25 QT之QSetting
简介QSettings类提供了持久的跨平台应用程序设置。用户通常期望应用程序记住它的设置(窗口大小、位置等)所有会话。这些信息通常存储在Windows系统注册表。在Unix系统中,在缺乏标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。QSettings围绕这些抽象技术,使我们能够以便携的方式保存和恢复应用程序设置。它还支持自定义存储格式。QSettings ...原创 2019-10-26 20:46:14 · 4644 阅读 · 0 评论 -
24 Qt 之 JSON小结
简述关于 Qt 中对 JSON 的生成与解析,Qt5 以前的版本,可以使用 QJson 库,需要单独下载、编译,才能使用。到了 Qt5,提供了专门的 QJsonDocument 及其相关类来读和写 JSON 文档。Qt 对 JSON 的支持包含这些类:QJsonArray 封装一个 JSON 数组 QJsonDocument 读和写 JSON 文档的方法 QJs...原创 2019-10-26 16:50:14 · 1849 阅读 · 0 评论 -
23 Qt 之界面数据存储与获取
简述在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来自配置文件、注册表、数据库、或者是Server。无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分都会被用到,例如:单击一个用户头像,显示该用户的详细信息(等级、昵称、姓名、个人说明)。常见接口Qt中,可以通过绝大部分已有的接口来存储数据、获取数据。例如: 存储数据...原创 2019-10-25 23:28:50 · 1768 阅读 · 2 评论 -
22、Qt 之 qInstallMessageHandler(输出详细日志)
简述安装之前已定义的消息处理程序,返回一个指向前一个消息处理程序。消息处理程序是一个函数,用于打印调试信息、警告信息、严重错误和致命的错误的消息。Qt库(debug模式)包含成百上千的警告信息打印,当发生内部错误时(通常是无效的函数参数)。Qt在release模式下构建还包含这些警告,除非在编译时设置QT_NO_WARNING_OUTPUT和/或QT_NO_DEBUG_OUTPUT。如...原创 2019-10-20 22:34:32 · 780 阅读 · 0 评论 -
21、Qt 之 QCryptographicHash
简述QCryptographicHash类提供了生成密码散列的方法。该类可以用于生成二进制或文本数据的加密散列值。目前支持MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。共有类型枚举QCryptographicHash::Algorithm:常量 取值 描述QCryptographicHash::Md4 0 ...原创 2019-10-20 22:19:04 · 1955 阅读 · 0 评论 -
20、Qt 之 QTemporaryFile
简述QTemporaryFile类是操作临时文件的I/O设备。QTemporaryFile用于安全地创建一个独一无二的临时文件。临时文件通过调用open()来创建,并且名称是唯一的(即:保证不覆盖现有文件),该临时文件将随着QTemporaryFile对象的析构被删除。这是一个重要的技术,避免了存储在临时文件的应用程序数据损坏。文件名可以自动生成,也可以基于模板(传参至QTempora...原创 2019-10-20 22:14:21 · 1157 阅读 · 0 评论 -
19、QFileSystemWatcher文件监控
简述QFileSystemWatcher类用于提供监视文件和目录修改的接口。QFileSystemWatcher通过监控指定路径的列表,监视文件系统中文件和目录的变更。调用addPath()函数可以监控一个特定的文件或目录。如果需要监控多个路径,可以使用addPaths()。通过使用removePath()和removePaths()函数来移除现有路径。QFileSyste...原创 2019-10-20 21:54:57 · 806 阅读 · 1 评论 -
18、 QStackedWidget
简述QStackedWidget继承自QFrame。QStackedWidget类提供了多页面切换的布局,一次只能看到一个界面。QStackedWidget可用于创建类似于QTabWidget提供的用户界面。接口 int addWidget(QWidget * widget)- 添加页面,并返回页面对应的索引 int count() const -获取页面数量...转载 2019-10-20 16:22:18 · 1310 阅读 · 0 评论 -
17、QT布局类
Qt的布局系统提供了一个简单的和强有力的方式,来自动排列窗口子控件布局。QHBoxLayout、QVBoxLayout、QGridLayout和QFormLayout。这些类都派生自QLayout,QLayout又派生自QObject(非QWidget),布局窗口自动地把子窗口按照它们被构造地顺序进行布局。要生成更复杂的布局,可以在其它布局里面嵌入另一个布局。所有QWidget子类可以使用...原创 2019-10-20 15:49:27 · 1715 阅读 · 0 评论 -
16、QSystemTrayIcon 系统托盘控件
简述QSystemTrayIcon类为应用程序在系统托盘中提供一个图标。现代操作系统通常在桌面上提供一个特殊的区域,称为系统托盘或通知区域,长时间运行的应用程序可以显示图标和短消息。要检查系统托盘是否存在在用户的桌面上,调用QSystemTrayIcon::isSystemTrayAvailable()静态函数。要添加系统托盘项,首先,需要创建一个QSystemTrayIcon...原创 2019-10-20 14:37:22 · 814 阅读 · 0 评论 -
15 QSlider及QProgressBar
一、QSlider简述QSlider部件提供了一个垂直或水平滑动条。滑块是一个用于控制有界值的典型部件。它允许用户沿水平或垂直方向移动滑块,并将滑块所在的位置转换成一个合法范围内的值。QSlider很少有自己的函数,大部分功能在QAbstractSlider中。最有用的函数是setValue(),用来设置滑块的当前值;triggerAction()来模拟点击的效果(对快捷键有用),...原创 2019-10-20 14:13:18 · 2051 阅读 · 0 评论 -
14 Qt 之 QSpinBox 和 QDoubleSpinBox
简述QSpinBox和QDoubleSpinBox均派生自QAbstractSpinBox。QSpinBox旨在处理整数和离散值(例如:月份名称),QDoubleSpinBox则用于处理浮点值。他们之间的区别就是处理数据的类型不同,其他功能都基本相同。QDoubleSpinBox的默认的精度是2位小数,但可以通过setDecimals()来改变。下面主要以QSpinBox为例,来讲...原创 2019-10-19 21:48:04 · 1927 阅读 · 0 评论 -
13 QT之QRadioButton、QCheckBox
QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮。这是因为它们都可以在开(选中)或者关(未选中)之间切换。区别是对用户选择的限制:单选框定义了“多选一”的选择,而复选框提供的是“多选多”的选择。尽管在技术上可以通过复选框来实现单选框的行为,反之亦然,但还是强烈建议使用众所周知的约定。一、QRadioButtonQRadioButton部件提供了一个带...原创 2019-10-19 21:22:59 · 1102 阅读 · 0 评论 -
12 Qt 之 QToolBox、QLCDNumber
一、QToolBox 简述QToolBox类提供了一个列(选项卡式的)部件条目。QToolBox可以在一个tab列上显示另外一个,并且当前的item显示在当前的tab下面。每个tab都在tab列中有一个索引位置。tab的item是一个QWidget 。每个item都有一个itemText()、一个可选的itemIcon()、一个可选的itemToolTip()、和一个widget(...原创 2019-10-19 21:02:26 · 999 阅读 · 0 评论 -
11 Qt的Socket通信
Qt中提供的所有的Socket类都是非阻塞的。QTcpServer:用于TCP/IP通信, 作为服务器端套接字使用 QTcpSocket:用于TCP/IP通信,作为客户端套接字使用 QUdpSocket:用于UDP通信,服务器,客户端均使用此套接字。1、TCP/IP客户端:TcpClientWidget::TcpClientWidget(QWidget *parent) :...原创 2019-04-14 14:17:20 · 2050 阅读 · 0 评论 -
10 Qt的文件操作
Qt 作为一个通用开发库,提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力。下面是 I/O 设备的类图(Qt5):QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;QFileDevice:Qt5新增加的类,提供了有关文件操作的通用实现。QFlie:访问本地文件或者嵌入资源;...原创 2019-04-13 21:23:21 · 1340 阅读 · 0 评论 -
9 QT的窗口系统-QMainWindow
QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(tool bars)、多个浮动窗口(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。需要特别说明的一个函数为:voidQMainWindow::setCentralWidg...原创 2019-03-31 22:30:53 · 1104 阅读 · 0 评论 -
08 Qt样式表
Qt样式表通过调用QWidget::setStyleSheet()或者QApplication::setStyleSheet()为独立的子部件、整个窗口,甚至是整个应用程序指定一个样式表。1、样式表的基础语法Qt的样式表的语法几乎和CSS完全相同,都是由一系列的样式规则构成。例如://设置该页面所有的QCheckBox、QLabel、QPushButton的颜色为红色,背景色为白...原创 2019-04-11 23:49:56 · 1328 阅读 · 0 评论 -
07 Qt自定义控件
在搭建Qt窗口界面的时候,在一个项目中很多窗口,或者是窗口中的某个模块会被经常性的重复使用。一般遇到这种情况我们都会将这个窗口或者模块拿出来做成一个独立的窗口类,以备以后重复使用。首先需要通过项目添加C++类,继承于QWidget,并在类中实现控件的逻辑及布局。示例代码如下:// smallwidget.h// smallwidget.h#ifndef SMALLWIDGE...原创 2019-04-02 22:37:21 · 753 阅读 · 1 评论 -
6 Qt 之属性系统
简述Qt提供一个类似于其它编译器供应商提供的复杂属性系统(Property System)。然而,作为一个编译器和平台无关的库,Qt不能够依赖于那些非标准的编译器特性,比如:__property或者[property]。Qt的解决方案适用于Qt支持平台下的任何标准C++编译器。它依赖于元对象系统(Meta Object Sytstem) - 通过信号和槽提供对象间通讯机制。声明属性的要...原创 2019-10-19 16:52:14 · 527 阅读 · 0 评论 -
5 Qt之Meta-Object 系统
简述Qt的元对象系统(Meta-Object System)提供了信号与槽机制,可用于对象间通信、运行时类别信息和动态属性系统。元对象系统基于三个方面: QObject类:为objects提供了一个可以利用元对象系统的基类。 Q_OBJECT宏: 在类的私有部分声明这个宏可以启用元对象特性,例如:动态属性、信号与槽。 Meta-Object编译器(moc)...原创 2019-10-19 16:31:03 · 410 阅读 · 0 评论 -
4 Qt 之 pro 配置多个子工程/子模块
简述进行Qt项目开发的时候,尤其是大型项目,经常涉及多工程/多模块问题,其主要思想还是模块化,目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。配置如果需要管理多工程(pro),比如:库工程、界面工程,其中,每一个工程均可单独编译成功,但存在依赖关系。也就是说,lib2依赖于lib1,而UI依赖于lib2。在pro文件内配置如下: 配置TEMPLATE为s...原创 2019-10-19 15:58:44 · 1366 阅读 · 0 评论 -
3 Qt Creator 添加自定义注释
基本配置打开 Qt Creator,菜单选择:工具 -> 选项 -> 文本编辑器 -> 片段。点击“添加”按钮,编辑自定义的“触发”。例如,触发:“header”,触发种类:“custom”。也可以填写为其它内容,自己方便记住即可。然后,填写注释的内容(也可以是其它形式的代码段):简单使用在编辑器中输入“header”,就会关联刚才设置的注释:这时...原创 2019-10-19 15:54:17 · 606 阅读 · 0 评论 -
2 QCreator调试并查看源码
在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助。Qt 版本及安装Qt 针对 Windows 平台提供了两种安装包: MinGW 版 - Minimalist GNU on Windows,使用 MinGW 作为默认编译器 MSVC 版-微软的VC编译器(VS2010、VS2012、VS2013、VS...原创 2019-10-19 15:51:01 · 470 阅读 · 0 评论 -
1 QT的pro文件详解
Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。1、QT的优点跨平台,几乎支持所有的平台 接口简单,容易上手,学习QT框架对学习其他框架有参考意义。 一定程度上简化了内存回收机制 开发效率高,能够快速的构建应用程序。 有很好的社区氛围,市场份额在缓慢上升。 可以进...原创 2019-03-31 12:27:12 · 2833 阅读 · 0 评论 -
12 Qt4及Qt5的多线程编程
一个可重入的类,指的是它的成员函数可以被多个线程安全地调用,只要每个线程使用这个类的不同的对象。而一个线程安全的类,指的是它的成员函数能够被多线程安全地调用,即使所有的线程都使用该类的同一个实例也没有关系。QObject是可重入的。它的大多数非GUI子类,例如:QTimer、QTcpSocket、QUdpSocket和QProcess,也都是可重入的,这使得在多线程中同时使用这些类成为可能...原创 2019-04-14 22:59:59 · 1816 阅读 · 0 评论 -
7 Qt之事件系统
在前面我们也曾经简单提到,Qt 程序需要在main()函数创建一个QApplication对象,然后调用它的exec()函数。这个函数就是开始 Qt 的事件循环。在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件。当事件发生时,Qt 将创建一个事件对象。Qt 中所有事件类都继承于QEvent。在事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数...原创 2019-04-12 23:57:27 · 799 阅读 · 0 评论 -
11 Qt常用控件(QLabel、QLineEdit)
1、QLabel(标签)QLabel是我们最常用的控件之一,其功能很强大,我们可以用来显示文本,图片和动画等,使用前需要加入<QLabel>头文件。一个QLabel可以包含以下任意内容类型:纯文本 使用setText()设置一个QString 富文本 使用setText()设置一个富文本的QString 图像 使用setPixmap()...原创 2019-04-02 21:29:57 · 7070 阅读 · 0 评论 -
10 QT的窗口系统-QDialog
对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。在使用前,需要加入头文件<QDialog>1、对话框分类模态对话框,就是会阻塞同一应用程序中其它窗口的输入。 非模态对话框则在弹出后,可以继续操作主窗口。模态对话框:/* 新加一...原创 2019-03-31 22:42:01 · 610 阅读 · 1 评论