bjtuwayne
这个作者很懒,什么都没留下…
展开
-
Qt开发总结(0)——前言
从读研的菜鸟时代起,就开始搞Qt。当时实验室核心项目是测控系统,用Qt做显控得心应手。从Qt4.6到Qt4.8再到现在的Qt5.13,Qt的更新速度让人惊叹,也是,蓦然回首,搞Qt已逾5年。从开始的只会用,到慢慢理解,掌握其原理和结构,也是经历了个漫长的过程。到现在,我会觉得还是在有理论基础的前提下才能更好的应用Qt。于是在更新完C++学习笔记系列后,我决定梳理一下Qt的一些知识。一来是自己5年经...原创 2019-07-24 22:10:34 · 682 阅读 · 0 评论 -
Qt开发总结(30)——应用程序发布
漫漫9个多月,我的Qt开发总结系列文章可能也要告一段落了。自己想写的基本上也就是这些了,但这并不意味着Qt的技术就这些,Qt也还在更新,将来它还会有更好的,更先进的技术加进来。所谓学无止境,要想不被时代抛弃,只能不停的学习。Qt还有一part技术现在也被广泛应用,那就是qml(qt quick)技术,但是我几乎小白,也没用过,计划将来学习一下,或是结合新的项目做一下。今天这第30篇收官之作想总结下...原创 2020-04-06 15:55:07 · 775 阅读 · 0 评论 -
Qt开发总结(29)——样式表
在UI开发中经常经常需要做美化,大多商业软件还需要专业的美工支持。Qt作为UI开发的利器,对美化这块支持也是比较友好的。本篇要总结的样式表就是Qt的一种强大的机制,它使界面的表现与界面的元素分离,使得设计皮肤与界面控件分离的软件成为可能。概述Qt样式表是允许用户定制widgets组件外观的强大机制,此外,子类化QStyle也可以定制widgets组件外观。QT样式表的概念、术语、语法很大程...原创 2020-04-05 18:49:27 · 761 阅读 · 0 评论 -
Qt开发总结(28)——数据库
这篇总结一下Qt的数据库操作。这篇文章可能涉及一些数据库语句,我这里不做过多解释,如果您不太具备数据库知识,大概也可以看懂,实在不行,只好去补习下SQL的知识,起码把SQL语句学一下。概述Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作。这里我们所说的“平台独立”,既包括操作系统平台,又包括各个数据库平台。Qt 的数据库操作还可以很方便的与 model/vie...原创 2020-03-28 15:24:11 · 883 阅读 · 0 评论 -
Qt开发总结(27)——多线程
多线程编程炙手可热,尤其是当代多核处理器的硬件条件下,多线程可以更好的利用系统硬件资源。Qt对多线程的支持也非常好,本篇笔记总结下Qt的多线程技术。概述Qt对多线程的支持优点在于:跨平台的多线程类,线程安全的事件投递以及跨线程的信号-槽连接。Qt中涉及的主要线程类有: 类名 描述 QAtomicInteger 独立于...原创 2020-03-14 18:47:30 · 1119 阅读 · 0 评论 -
Qt开发总结(26)——解析JSON和XML
之前几篇总结了文件、网络和串口操作等,这些功能或多或少都与IO操作有关,你可能已经发现他们涉及的一些类都是由QIODevice派生而来,这意味着涉及到数据传输,本篇将介绍两类常见的数据格式——JSON和XML,并总结Qt是如何解析他们的。JSON数据格式JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特...原创 2020-03-08 15:56:10 · 1872 阅读 · 2 评论 -
Qt开发总结(25)——网络编程
Qt网络通信模块提供了用于编写TCP/IP客户端和服务器端程序的各种类。包括一些低级功能类,比如QTcpSocket, QTcpServer 和 QUdpSocket实现一些底层TCP或UDP通信,也包括一些高级类,如QNetworkRequest, QNetworkReply 和 QNetworkAccessManager等实现一些常见的Http、Ftp网络通讯。Qt网络模块还提供用于网络代理、...原创 2020-03-06 12:03:46 · 2626 阅读 · 4 评论 -
Qt开发总结(24)——串口编程
本篇将总结Qt的串口编程。Qt4中并没有串口模块支持,但自Qt5.1开始,官方加入了serialport模块,使得我们可以轻松使用该模块实现跨平台串口操作。概述Qt Serial Port提供了基本的串口操作接口函数。包括配置,I/O操作,获取和设置RS-232控制管脚信号等。使用时需要添加模块支持并在调用相关接口的文件中添加头文件支持:QT += serialport#inclu...原创 2020-01-11 18:03:30 · 2173 阅读 · 0 评论 -
Qt开发总结(23)——文件系统
文件读写是大多编程语言所具备的基本功能之一。C语言中有FILE *指针,C++语言中有fstream类。这归根到底是因为操作系统在设计之初就定义了文件系统是其基本要素之一。Qt中也封装了基于C++的跨平台的文件系统类,这些类的功能非常友好,以致于你可能使用了Qt的文件功能类后会对C++的fstream有点陌生了。本篇总结将总结Qt这一非GUI功能——文件系统。相关的类 类 ...原创 2020-01-04 17:02:35 · 1091 阅读 · 0 评论 -
Qt开发总结(22)——多媒体
多t体支持是Qt不可或缺的一部分。但是Qt除了提供直观的GUI界面之外,它还提供访问摄像头和收音机功能所需的API。这使得我们可以完全用Qt自身,不用第三方库就可以写一个视频播放器或者音乐播放器。这对于一些入门者来说似乎很有魅力,我本人在接触到Qt之后就用多媒体技术编写了一个音乐播放器,那时候的我还编写了一个简易版的QQ,装在了女友和自己电脑上。概述在Qt多媒体(MultiMedia)中存...原创 2020-01-01 19:55:14 · 2523 阅读 · 1 评论 -
Qt开发总结(21)——Qwt第三方绘图组件
上两篇分别记录了Qt的二维图表charts和三维图表Data Visualization,我们已经有感于它的强大和方便,但是我还是想写一写我使用了N年之久的qwt,一款强大的第三库方Qt库表库,它支持从Qt4.4到Qt5的所有版本,具有丰富的图表类,在那个Qt Charts和Data Visualization还是收费内容的时代,真的为开发人员提供了很大的帮助。下载与安装本篇笔记涉及的qw...原创 2019-12-28 21:30:56 · 3699 阅读 · 2 评论 -
Qt开发总结(20)——Data Visualization
上篇介绍了Qt Charts二维图表模块,本篇笔记总结Qt三维图表模块——Data Visualization。同样,在Qt5.7之前之后商业版才有,从Qt5.7开始免费开放在了社区版中。与QtCharts类似,也是基于Qt的Graphics View图形视图架构。当然,目前的Data Visualization还无法和一些专业的三维显示类库相提并论,但是对于一些简单的三维数据显示是比较实用的。另...原创 2019-12-26 22:20:31 · 7422 阅读 · 6 评论 -
Qt开发总结(19)——Qt Charts
上两篇记录了Qt的基本绘图QPainter和Graphics View绘图架构。还是在Qt4的时代,我用这个QPainter写了一个Plot类,实现了简单的二维曲线动态绘制。后来,我接触到了qwt,一款强大的第三方库Qt图表库,再后来,Qt5官方把Qt Charts和Data Visualization开放在了社区版里,使得我们可以轻松采用这两款官方插件实现二维和三维图表绘制了。接下来的几篇将总结...原创 2019-12-21 11:57:31 · 3500 阅读 · 0 评论 -
Qt开发总结(18)——Graphics View绘图架构
通过上篇笔记我们知道可以采用QPainter在绘图设备的paintEvent事件里编写绘图的程序,这种绘图方式效率相对较低,绘制的图形比较简单。Qt为绘制复杂的可交互图形提供了Graphics View绘图架构,是一种基于图形选项(Graphics Item)Model/View框架(可参见本人博客Qt开发总结(14)——Model/View框架),而且其核心试图组件QGraphicsView也作...原创 2019-12-15 20:55:22 · 3472 阅读 · 0 评论 -
Qt开发总结(17)——绘图QPainter
GUI用户界面实际上都是通过绘图得到的。Qt的二维绘图基本功能是使用QPainter在绘图设备上绘图。QPainter可以绘制所有的图形,从基本图形——点、线、圆到复杂的图形。本篇笔记通过总结QPainter的使用,试图深入理解Qt的绘图机制。QPainter基本属性Qt的绘图系统涉及QPainter、QPaintDevice和QPaintEngine类。QPainter是用来绘图的类,Q...原创 2019-12-14 13:26:49 · 3156 阅读 · 1 评论 -
Qt开发总结(16)——布局Layout
总结了部分常用了基本控件之后,本篇笔记对Qt的布局管理进行总结。Qt自带一系列简单而强大的布局管理工具,以自动在窗体中排布控件。这极大的方便了开发人员管理GUI控件,达到几乎强迫症级别的优美排布,尤其是在适应不同分辨率界面的时候。所有的QWidget子类都可以用layout管理他们的控件,用QWidget::setLayout()函数既可以为这个widget设置layout。如果一个Layou...原创 2019-12-12 20:57:48 · 3290 阅读 · 2 评论 -
Qt开发总结(15)——Model/View架构使用
本篇是上篇Qt开发总结(14)——Model/View 框架的延续,从这篇总结可以很具体的实现一些Model/View控件和效果,大部分都是干货,在最后还给出了官方的一些示例供学习参考。一个简单的只读表 //main.cpp #include <QtWidgets/QApplication> #include <QtWidgets/QTableView>...原创 2019-12-10 19:26:53 · 734 阅读 · 0 评论 -
Qt开发总结(14)——Model/View 框架
上篇总结中也提到了,Qt还有一类常见的UI控件,这类控件采用了Qt的一种称作Model/View框架的技术。每个UI开发人员都应该了解ModelView编程,该技术涉及一系列list、table和树tree结构等控件。这些视图类使用model/view体系结构来管理数据与其显示方式之间的关系。此体系结构引入的功能分离为开发人员提供了更大的灵活性,可以自定义项目的表示形式,并提供标准的模型界面,以允...原创 2019-12-08 22:20:25 · 734 阅读 · 1 评论 -
Qt开发总结(13)——控件之显示控件
中间穿插了一个资源系统,也是突然有感写的。这篇笔记接着第11章——输入控件继续向下写。本篇笔记总结Qt的显示控件。Qt显示控件有以下几种: 控件名 对应类名 描述 标签 QLabel 显示文字和图片 富文本浏览器 QTextBrowser...原创 2019-12-07 13:49:45 · 2260 阅读 · 1 评论 -
Qt开发总结(12)——资源系统
废话Qt开发总结这一part又有点半途而废的意思了。我只能说人在江湖,身不由己。毕竟要为了生活奔波,有些自己喜欢的事就得退居二线。话说我还是挺喜欢总结和分享的,或许某一天有什么机会,我可以去做个教代码的老师,想想而已。这篇笔记想着把最近在开发过程中的遇到的一些新的认识总结一下,关于Qt的资源系统。之前我写Qt的风格是完全用代码写界面,控件和布局都是一个个new出来,但是在实际开发中,还是有...原创 2019-12-04 11:13:26 · 636 阅读 · 2 评论 -
Qt开发总结(1)——初识Qt
首先,Qt是一种用C++编写的类库。C++不多说,它核心的思想是面向对象,也即类的思想。所谓类库,也即用C++语言封装的一系列类的集合,这些类具有很强大的功能。初级玩家会觉得Qt是写界面用的,或者用“类似于MFC”这种说法描述Qt的功能。其实Qt的功能类绝不仅仅限于写界面。比如,你在Qt的类库中可以找到NetWork支持,多媒体支持,串口支持等等。其次,Qt的另一大应用优点是它是跨平台的。我们...原创 2019-07-25 19:55:30 · 817 阅读 · 0 评论 -
Qt开发总结(3)——Qt类库概述
Qt归根到底是一个强大的C++类库,这些大量的类根据功能分为各种模块。Qt基本模块(Qt Essentials)Qt基本模块提供了Qt在所有平台的基本功能,它们在所有的开发平台和目标平台上都能用。Qt跨平台的特性基本在这个模块实现。 模块 描述 Qt Core Core non-graphical classes u...原创 2019-08-06 11:30:35 · 1633 阅读 · 0 评论 -
Qt开发总结(4)——Qt全局定义
《clean code》中说自己的工程最好创建自己的数据类型定义。Qt在其QtGlobal头文件中包含了一些全局定义。包括基本数据类型、函数和宏定义。数据类型数据类型定义是对基本类型的重定义,是为了确保在各个平台上各数据类型都有统一的确定的长度。其他一些定义是与Qt消息处理相关的类型。 Qt数据类型 等效定义 描述 ...原创 2019-08-07 14:45:45 · 1831 阅读 · 0 评论 -
Qt开发总结(5)——Qt中的容器
C++的标准模板库(STL)中定义了一系列容器,并对应有若干容器类和操作容器用到的迭代器(这部分内容可参见本人博客《C++学习笔记——STL标准模板库》)。Qt自定义了几个容器类,这些容器类同样是基于模板的,可以实例化为具体的数据类型。相比于STL中的容器,Qt中的容器更加轻巧、安全和便于使用,而且进行了速度和存储优化,另外,它们还是线程安全的,可以作为只读容器被多个线程访问。与STL类似,Q...原创 2019-08-12 21:19:43 · 1092 阅读 · 0 评论 -
Qt开发总结(6)——QString类
本篇将单独总结QString类。相比于C++ Std中的string来说,QString要好用的多。QString用来存储和处理字符串,其采用的是Unicode码,每个字符是一个16位的QChar(不是8位的char),所以QString同样可以处理中文字符,而且一个汉字算作一个字符。同时,QString应用了隐式共享以减少内存的使用,避免不必要的内存拷贝。初始化最简单和常见的QStrin...原创 2019-08-28 16:43:51 · 1179 阅读 · 0 评论 -
Qt开发总结(7)——窗体之Widget
本篇将总结Qt的窗体——QWidget、QMainWindow和QDialog。很多人对这三个类傻傻分不清楚,其实简单来讲QWidget是所有窗体的基类,而QMainWindow和QDialog都是QWidget的子类,QMainWindow是一种具有标题栏,菜单栏,工具栏和状态栏的窗体,QDialog是我们通常说的对话框。QWidgetwidget是最基本的用户界面接口,它可以响应鼠标、...原创 2019-08-29 15:56:13 · 1170 阅读 · 1 评论 -
Qt开发总结(8)——窗体之MainWindow
MainWindow是一种特殊的Widget,它拥有工具栏QToolBar, 菜单栏 QMenuBar, 和状态栏QStatusBar,并且可以设计停靠窗体和中心窗体,典型的MainWindow构架如下图所示。Center Widget特别地,创建一个MainWindow必须创建center widget,哪怕是个空的widget。通常来说,center widget是标准的Qt Wi...原创 2019-08-31 16:08:48 · 2742 阅读 · 1 评论 -
Qt开发总结(9)——窗体之Dialog
Dialog是一种常见的短周期任务和简介交互的top-level window。Dialog可以分为模式对话框和非模式对话框。Qt中的QDialog类提供了Dialog的原型,它可以有返回值和默认的按钮。每个窗体都有用户按下了enter键时默认的按钮。可以通过QPushButton::setDefault(), QPushButton::isDefault() and QPushButton::a...原创 2019-09-10 07:20:59 · 1885 阅读 · 2 评论 -
Qt开发总结(10)——控件之Buttons
Qt5中提供了5种常用的按钮控件。包括: 控件名 对应类名 描述 按钮 QPushButton 通常意义的按钮 工具栏按钮 QToolButton 在MainWindow中工具栏中的按钮 单选...原创 2019-09-12 20:16:29 · 816 阅读 · 0 评论 -
Qt开发总结(11)——控件之输入控件
Qt输入控件由各类box和edit组成。具体包括: 控件名 对应类名 描述 下拉列表 QComboBox/QFontComboBox 提供下拉列表供用户选择 单行文本编辑框 QLineEdit 单行可输入文本编辑 ...原创 2019-10-08 20:42:26 · 1654 阅读 · 1 评论 -
Qt开发总结(2)——Qt核心技术
Qt在C++标准的基础上添加了一些特性,也即属于Qt自己的核心技术。这些核心技术在Qt Core模块中实现。这些特性主要包括:非常强大的无缝连接通信机制,称为信号和槽; 可查询和可设计的对象属性; 层次化并可查询的对象树; 用保护指针(QPointer)通过很自然的方式实现对象的所有权管控; 跨库工作的动态投射;一、元对象系统(The Meta-Object System)...原创 2019-07-26 21:42:38 · 5949 阅读 · 1 评论