- 博客(81)
- 资源 (36)
- 问答 (2)
- 收藏
- 关注
原创 Qt开发总结(0)——前言
从读研的菜鸟时代起,就开始搞Qt。当时实验室核心项目是测控系统,用Qt做显控得心应手。从Qt4.6到Qt4.8再到现在的Qt5.13,Qt的更新速度让人惊叹,也是,蓦然回首,搞Qt已逾5年。从开始的只会用,到慢慢理解,掌握其原理和结构,也是经历了个漫长的过程。到现在,我会觉得还是在有理论基础的前提下才能更好的应用Qt。于是在更新完C++学习笔记系列后,我决定梳理一下Qt的一些知识。一来是自己5年经...
2019-07-24 22:10:34 600
原创 C++学习笔记(0)——写在前面
我不是计算机系和软件系毕业的程序员,但认真算起来,用C++写代码迄今已近5年了。非科班出生的感受就像是在社会大学中成长的人一样,很多情况都是经验式知识,所谓知其然不知其所以然。缺乏理论体系基础所暴露的问题不仅仅体现在专业交流上(包括面试,专业考试等等),还更深刻的体现在阅读代码能力和代码开发的质量上。这段时间在考虑人生第一次跳槽的问题,让自己突然感觉必须要认真充电了。于是我决定每天花至少一小时时间...
2018-09-23 11:19:39 351 2
原创 Qt开发总结(30)——应用程序发布
漫漫9个多月,我的Qt开发总结系列文章可能也要告一段落了。自己想写的基本上也就是这些了,但这并不意味着Qt的技术就这些,Qt也还在更新,将来它还会有更好的,更先进的技术加进来。所谓学无止境,要想不被时代抛弃,只能不停的学习。Qt还有一part技术现在也被广泛应用,那就是qml(qt quick)技术,但是我几乎小白,也没用过,计划将来学习一下,或是结合新的项目做一下。今天这第30篇收官之作想总结下...
2020-04-06 15:55:07 678
原创 Qt开发总结(29)——样式表
在UI开发中经常经常需要做美化,大多商业软件还需要专业的美工支持。Qt作为UI开发的利器,对美化这块支持也是比较友好的。本篇要总结的样式表就是Qt的一种强大的机制,它使界面的表现与界面的元素分离,使得设计皮肤与界面控件分离的软件成为可能。概述Qt样式表是允许用户定制widgets组件外观的强大机制,此外,子类化QStyle也可以定制widgets组件外观。QT样式表的概念、术语、语法很大程...
2020-04-05 18:49:27 648
原创 Qt开发总结(28)——数据库
这篇总结一下Qt的数据库操作。这篇文章可能涉及一些数据库语句,我这里不做过多解释,如果您不太具备数据库知识,大概也可以看懂,实在不行,只好去补习下SQL的知识,起码把SQL语句学一下。概述Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作。这里我们所说的“平台独立”,既包括操作系统平台,又包括各个数据库平台。Qt 的数据库操作还可以很方便的与 model/vie...
2020-03-28 15:24:11 788
原创 Qt开发总结(27)——多线程
多线程编程炙手可热,尤其是当代多核处理器的硬件条件下,多线程可以更好的利用系统硬件资源。Qt对多线程的支持也非常好,本篇笔记总结下Qt的多线程技术。概述Qt对多线程的支持优点在于:跨平台的多线程类,线程安全的事件投递以及跨线程的信号-槽连接。Qt中涉及的主要线程类有: 类名 描述 QAtomicInteger 独立于...
2020-03-14 18:47:30 967
原创 Qt开发总结(26)——解析JSON和XML
之前几篇总结了文件、网络和串口操作等,这些功能或多或少都与IO操作有关,你可能已经发现他们涉及的一些类都是由QIODevice派生而来,这意味着涉及到数据传输,本篇将介绍两类常见的数据格式——JSON和XML,并总结Qt是如何解析他们的。JSON数据格式JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特...
2020-03-08 15:56:10 1465 2
原创 Qt开发总结(25)——网络编程
Qt网络通信模块提供了用于编写TCP/IP客户端和服务器端程序的各种类。包括一些低级功能类,比如QTcpSocket, QTcpServer 和 QUdpSocket实现一些底层TCP或UDP通信,也包括一些高级类,如QNetworkRequest, QNetworkReply 和 QNetworkAccessManager等实现一些常见的Http、Ftp网络通讯。Qt网络模块还提供用于网络代理、...
2020-03-06 12:03:46 2534 4
原创 Qt开发总结(24)——串口编程
本篇将总结Qt的串口编程。Qt4中并没有串口模块支持,但自Qt5.1开始,官方加入了serialport模块,使得我们可以轻松使用该模块实现跨平台串口操作。概述Qt Serial Port提供了基本的串口操作接口函数。包括配置,I/O操作,获取和设置RS-232控制管脚信号等。使用时需要添加模块支持并在调用相关接口的文件中添加头文件支持:QT += serialport#inclu...
2020-01-11 18:03:30 1902
原创 Qt开发总结(23)——文件系统
文件读写是大多编程语言所具备的基本功能之一。C语言中有FILE *指针,C++语言中有fstream类。这归根到底是因为操作系统在设计之初就定义了文件系统是其基本要素之一。Qt中也封装了基于C++的跨平台的文件系统类,这些类的功能非常友好,以致于你可能使用了Qt的文件功能类后会对C++的fstream有点陌生了。本篇总结将总结Qt这一非GUI功能——文件系统。相关的类 类 ...
2020-01-04 17:02:35 948
原创 Qt开发总结(22)——多媒体
多t体支持是Qt不可或缺的一部分。但是Qt除了提供直观的GUI界面之外,它还提供访问摄像头和收音机功能所需的API。这使得我们可以完全用Qt自身,不用第三方库就可以写一个视频播放器或者音乐播放器。这对于一些入门者来说似乎很有魅力,我本人在接触到Qt之后就用多媒体技术编写了一个音乐播放器,那时候的我还编写了一个简易版的QQ,装在了女友和自己电脑上。概述在Qt多媒体(MultiMedia)中存...
2020-01-01 19:55:14 2242 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 3386 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 6833 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 3280
原创 Qt开发总结(18)——Graphics View绘图架构
通过上篇笔记我们知道可以采用QPainter在绘图设备的paintEvent事件里编写绘图的程序,这种绘图方式效率相对较低,绘制的图形比较简单。Qt为绘制复杂的可交互图形提供了Graphics View绘图架构,是一种基于图形选项(Graphics Item)Model/View框架(可参见本人博客Qt开发总结(14)——Model/View框架),而且其核心试图组件QGraphicsView也作...
2019-12-15 20:55:22 2948
原创 Qt开发总结(17)——绘图QPainter
GUI用户界面实际上都是通过绘图得到的。Qt的二维绘图基本功能是使用QPainter在绘图设备上绘图。QPainter可以绘制所有的图形,从基本图形——点、线、圆到复杂的图形。本篇笔记通过总结QPainter的使用,试图深入理解Qt的绘图机制。QPainter基本属性Qt的绘图系统涉及QPainter、QPaintDevice和QPaintEngine类。QPainter是用来绘图的类,Q...
2019-12-14 13:26:49 3003 1
原创 Qt开发总结(16)——布局Layout
总结了部分常用了基本控件之后,本篇笔记对Qt的布局管理进行总结。Qt自带一系列简单而强大的布局管理工具,以自动在窗体中排布控件。这极大的方便了开发人员管理GUI控件,达到几乎强迫症级别的优美排布,尤其是在适应不同分辨率界面的时候。所有的QWidget子类都可以用layout管理他们的控件,用QWidget::setLayout()函数既可以为这个widget设置layout。如果一个Layou...
2019-12-12 20:57:48 2946 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 659
原创 Qt开发总结(14)——Model/View 框架
上篇总结中也提到了,Qt还有一类常见的UI控件,这类控件采用了Qt的一种称作Model/View框架的技术。每个UI开发人员都应该了解ModelView编程,该技术涉及一系列list、table和树tree结构等控件。这些视图类使用model/view体系结构来管理数据与其显示方式之间的关系。此体系结构引入的功能分离为开发人员提供了更大的灵活性,可以自定义项目的表示形式,并提供标准的模型界面,以允...
2019-12-08 22:20:25 636 1
原创 Qt开发总结(13)——控件之显示控件
中间穿插了一个资源系统,也是突然有感写的。这篇笔记接着第11章——输入控件继续向下写。本篇笔记总结Qt的显示控件。Qt显示控件有以下几种: 控件名 对应类名 描述 标签 QLabel 显示文字和图片 富文本浏览器 QTextBrowser...
2019-12-07 13:49:45 2146 1
原创 Qt开发总结(12)——资源系统
废话Qt开发总结这一part又有点半途而废的意思了。我只能说人在江湖,身不由己。毕竟要为了生活奔波,有些自己喜欢的事就得退居二线。话说我还是挺喜欢总结和分享的,或许某一天有什么机会,我可以去做个教代码的老师,想想而已。这篇笔记想着把最近在开发过程中的遇到的一些新的认识总结一下,关于Qt的资源系统。之前我写Qt的风格是完全用代码写界面,控件和布局都是一个个new出来,但是在实际开发中,还是有...
2019-12-04 11:13:26 589 2
原创 Qt开发总结(11)——控件之输入控件
Qt输入控件由各类box和edit组成。具体包括: 控件名 对应类名 描述 下拉列表 QComboBox/QFontComboBox 提供下拉列表供用户选择 单行文本编辑框 QLineEdit 单行可输入文本编辑 ...
2019-10-08 20:42:26 1531 1
原创 Qt开发总结(10)——控件之Buttons
Qt5中提供了5种常用的按钮控件。包括: 控件名 对应类名 描述 按钮 QPushButton 通常意义的按钮 工具栏按钮 QToolButton 在MainWindow中工具栏中的按钮 单选...
2019-09-12 20:16:29 730
原创 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 1751 2
原创 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 2539 1
原创 Qt开发总结(7)——窗体之Widget
本篇将总结Qt的窗体——QWidget、QMainWindow和QDialog。很多人对这三个类傻傻分不清楚,其实简单来讲QWidget是所有窗体的基类,而QMainWindow和QDialog都是QWidget的子类,QMainWindow是一种具有标题栏,菜单栏,工具栏和状态栏的窗体,QDialog是我们通常说的对话框。QWidgetwidget是最基本的用户界面接口,它可以响应鼠标、...
2019-08-29 15:56:13 1082 1
原创 Qt开发总结(6)——QString类
本篇将单独总结QString类。相比于C++ Std中的string来说,QString要好用的多。QString用来存储和处理字符串,其采用的是Unicode码,每个字符是一个16位的QChar(不是8位的char),所以QString同样可以处理中文字符,而且一个汉字算作一个字符。同时,QString应用了隐式共享以减少内存的使用,避免不必要的内存拷贝。初始化最简单和常见的QStrin...
2019-08-28 16:43:51 1045
原创 Qt开发总结(5)——Qt中的容器
C++的标准模板库(STL)中定义了一系列容器,并对应有若干容器类和操作容器用到的迭代器(这部分内容可参见本人博客《C++学习笔记——STL标准模板库》)。Qt自定义了几个容器类,这些容器类同样是基于模板的,可以实例化为具体的数据类型。相比于STL中的容器,Qt中的容器更加轻巧、安全和便于使用,而且进行了速度和存储优化,另外,它们还是线程安全的,可以作为只读容器被多个线程访问。与STL类似,Q...
2019-08-12 21:19:43 988
原创 Qt开发总结(4)——Qt全局定义
《clean code》中说自己的工程最好创建自己的数据类型定义。Qt在其QtGlobal头文件中包含了一些全局定义。包括基本数据类型、函数和宏定义。数据类型数据类型定义是对基本类型的重定义,是为了确保在各个平台上各数据类型都有统一的确定的长度。其他一些定义是与Qt消息处理相关的类型。 Qt数据类型 等效定义 描述 ...
2019-08-07 14:45:45 1659
原创 Qt开发总结(3)——Qt类库概述
Qt归根到底是一个强大的C++类库,这些大量的类根据功能分为各种模块。Qt基本模块(Qt Essentials)Qt基本模块提供了Qt在所有平台的基本功能,它们在所有的开发平台和目标平台上都能用。Qt跨平台的特性基本在这个模块实现。 模块 描述 Qt Core Core non-graphical classes u...
2019-08-06 11:30:35 1537
原创 Qt开发总结(2)——Qt核心技术
Qt在C++标准的基础上添加了一些特性,也即属于Qt自己的核心技术。这些核心技术在Qt Core模块中实现。这些特性主要包括:非常强大的无缝连接通信机制,称为信号和槽; 可查询和可设计的对象属性; 层次化并可查询的对象树; 用保护指针(QPointer)通过很自然的方式实现对象的所有权管控; 跨库工作的动态投射;一、元对象系统(The Meta-Object System)...
2019-07-26 21:42:38 5625 1
原创 Qt开发总结(1)——初识Qt
首先,Qt是一种用C++编写的类库。C++不多说,它核心的思想是面向对象,也即类的思想。所谓类库,也即用C++语言封装的一系列类的集合,这些类具有很强大的功能。初级玩家会觉得Qt是写界面用的,或者用“类似于MFC”这种说法描述Qt的功能。其实Qt的功能类绝不仅仅限于写界面。比如,你在Qt的类库中可以找到NetWork支持,多媒体支持,串口支持等等。其次,Qt的另一大应用优点是它是跨平台的。我们...
2019-07-25 19:55:30 692
原创 Ubuntu16.04下Qt5.9+opencv3.4开发教程
此教程为在ubuntu16.04操作系统下完成Qt5.9.1+opencv3.4.1的开发环境搭建以及运行环境搭建,开发环境搭建面向开发人员,可以在该环境下编写、调试和发布代码。运行环境搭建面向维护人员,旨在将打包好的程序放在该环境中运行即可。Part1 运行环境搭建一、安装Ubuntu操作系统1.下载镜像文件Ubuntu系统镜像:ubuntu-16.04.3-desktop-am...
2019-05-13 19:41:57 1308
原创 C++学习笔记(24)——文件IO
上篇笔记中总结的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的。在实际应用中,常以磁盘文件作为对象。即从磁盘文件读取数据,将数据输出到磁盘文件。磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用。一、文件文件(file)是程序设计中一个重要的概念。所谓“文件”,一般指存储在外部介质上数据的集合。一批数据是以文件的形式...
2019-04-23 20:10:38 190
原创 C++学习笔记(23)——输入和输出
很无奈,再次险些败给了懒惰。C++学习笔记更新系列还差输入输出这一章,却拖了很久时间。这几天可能稍有空闲,就把这遗留的一章码出来吧。但是这仅仅是C++入门学习的笔记,它的博大精深值得继续深入探究学习。所以,这并不意味着结束。将来将继续总结和分享某些专题或是在工程中遇到的一些idea。一、输入输出我们经常用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上。从操...
2019-04-20 18:14:50 541
原创 C++学习笔记(22)——STL标准模板库
1前言本篇笔记开始总结C++标准中的一系列强大的库。STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISOC++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一...
2019-03-21 21:11:05 316
原创 C++学习笔记(21)——string类
string是C++标准库中表示字符串的字符串类。在之前的笔记中也涉及到过string的应用,我们大概知道string与c风格字符串的区别在于前者不用操心字符串长度的问题,其内部会动态分配需要的内存。其实string 类是 STL(标准模板库)中 basic_string 模板实例化得到的模板类。其定义如下:typedef basic_string <char> string;...
2019-02-12 19:35:45 259
原创 C++学习笔记(20)——再谈类型转换
在《C++学习笔记(13)——类的类型转换》一文中已经对类型转换做了总结,我们已经知道包括基本类型、自定义类在内的左右类型都可以互相转换,但转换需要某些前提条件才能完成。比如可以通过构造函数完成内置类型到类的转换,通过定义转换函数完成类向内置类型的转换。那么,类型转换发生在类与类之间会有什么发生?一、类的类型转换存在的问题如果两个根本没有任何关系的类根本没有转换的意义,但是从语法上讲,下述...
2019-01-26 15:36:28 199
原创 C++学习笔记(19)——异常
程序在编译阶段编译通过,但是可能在运行阶段遭遇错误。通常程序员会称之为运行时的程序崩溃。比如常见的用0作为除数,内存分配失败或内存访问失败等等。通常我们可以添加代码,例如用判断语句来避免这种运行阶段可能会出现的错误,并通过函数返回值的方式来告诉调用它的程序块,该函数执行失败。这也是C语言的通常做法。这样可以避免程序的崩溃问题。但是会有这样的问题出现:程序员可以检测出发生了运行时错误,但不知道怎...
2019-01-17 14:44:48 223
原创 C++学习笔记(18)——友元
在《设计类》一文中总结了友元函数的相关的知识。该篇笔记第四节总结到为了访问类的私有成员,可以将函数设置为类的友元函数。并同时提到C++中友元有三种,分别是友元函数,友元类,友元成员函数。本文将全面总结友元的相关知识。一、复习友元函数类的友元函数是将函数声明为类的友元,注意它并不是类的成员函数,不能用类的作用域解析符(::)去调用它。后面将会讲到的友元成员函数正是体现了这样的区别。类的友...
2019-01-15 14:45:39 193
雷达坐标系转换v2.0
2021-03-28
Qt5-stylesheet-样式表
2020-04-05
Qt-Jsonxml.zip
2020-01-04
SerialPort.zip
2020-01-04
findfiles.zip
2020-01-02
MultiMedia.zip
2019-12-21
texturesurface.zip
2019-12-14
QtCharts.rar
2019-12-14
collidingmice.zip
2019-12-14
painting.zip
2019-12-11
layouts.zip
2019-12-11
editabletreemodel.rar
2019-12-07
spinboxes.rar
2019-10-08
groupbox.rar
2019-09-12
C语言实现的AVL平衡二叉树
2019-03-21
C++类封装设计继承
2018-12-15
字符串加密算法
2018-11-25
VS2008下的动态库创建以及应用实例,并通过工具生成在Linux下可运行的makefile
2017-04-20
windriver for linux安装
2017-11-07
请教大神,qt编译成功的mysql驱动为何不能被识别。
2017-06-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人