基于QT5的C++开发的学习思想

https://www.zhihu.com/question/48999615/answer/114502935
由于非常喜欢,引用某乎的回答。

作者:诸葛不亮
C++/Qt。守序中立,政治不正确
pansz
百行代码胜过纸上千言,上手写就行
Qt的文档足够丰富,demo也很详尽(虽然主要是GUI部分),再不济还有众多的博客文章可以查询
答主是机械专业本科毕业生,想用Qt开发智能机器远程维护系统,那么用得到的组件我就大致列举如下吧,可以试试参照着demo、文档之类的写一写试试

QtCore组件:
QByteArray——字节数据处理,类似c里面的PUCHAR buffer
QList、QMap、QHash、QPair、QVector——常用数据容器,建议先阅读Qt文档里的Container Classes部分了解其中的差异
QString——字符串处理,不多说了。对了,QString内部统一使用Unicode
QDebug——Qt的命令行信息输出类,更常用的是qDebug()宏,支持c语法和c++的流操作语法
QIODevice——Qt所有涉及到硬件I/O的组件的统一基类,为所有硬件I/O提供了统一的接口。在使用各类I/O组件前,建议通读这个类的文档
QTimer——跨平台的定时器模块,提供通用精度和高精度定时器功能
QThread——跨平台的线程模块,支持线程优先级自定义
QMutex——跨平台的互斥锁模块,虽然Qt的多线程应用完全可以全程无锁……
QFileInfo、QDir——提供对文件系统的管理操作,其中QFileInfo很常用,可以把各种格式的路径(正斜杠、反斜杠、双斜杠、相对路径、绝对路径)转化为标准格式的绝对路径
QFile——文件操作类
QTextStream——类似std::iostream,提供对文本信息的流操作,可以直接作用于QFile、QIODevice、QString等对象上
QDataStream——提供平台无关,内容统一,基于流操作的,用于传输二进制数据的类。这个在标准库里都没能完全支持,真心好用

QtNetwork组件:
QTcpServer/QTcpSocket——TCP套接字,性能没有直接用socket底层编程,或者用IOCP、ASIO这类高端技术的好,但胜在封装层次高,API简单易用人性化。如果对端的机子是工控机等,能运行类似Ubuntu等linux系统的话,可以考虑用网络方式进行通信
QUdpSocket——UDP套接字,由于UDP是无连接的,所以没有专门的Server类来进行监听,服务端客户端是同一套接口

QtSerialPort组件:
QSerialPort——串口通信组件,适合用来与传感器等,基于RS485/RS232的方式传输数据的硬件设备进行通信

QtSerialBus组件:
用于处理工业级串行总线的通信协议,如CAN总线、ModBus等。此组件在目前最新的Qt 5.7中属于Technique Peview,尚未成熟,可能会有问题

QtSensors、QtNFC、QtBluetooth、QtPositioning组件:
QtSensors组件是为重力感应、旋转感应、光线感应、温度感应等常见的出现在手机等移动设备上的传感器提供支持的组件
QtNFC,顾名思义,提供NFC支持
QtBluetooth,蓝牙组件
QtPositioning,提供定位服务的支持
以上组件都需要操作系统相应驱动的支持。如果是在手机上,应该能直接用。如果是智能硬件这种,需要开发者进行驱动支持的平台,可能得用针对驱动编写Qt插件的方式进行接入,这几个组件是近几个版本才加入的,我没有具体了解过,详见文档

QtWidgets组件:
如果需要图形界面的话,可以用QtWidgets写界面,基于信号槽进行前后台通信会很方便,而且也容易上手

QtQuick组件:
包括QtQuick、QtQml、QtQuickControl等一系列工具,使用脚本的形式描述界面,界面渲染性能高,开发效率高,但坏处是语法和C++不同,更偏向于JS的语法,有一定上手难度。如果是智能硬件上需要界面,而且是触控型的界面,那么很适合用Qt Quick做

QtSql组件:
数据库组件,在答主涉及的领域里,很适合使用SQLite——在嵌入式领域应用广泛的关系型数据库。
那么常用的类主要有三个:
QSqlDatabase——管理数据库连接的类,作为全局的数据库引擎为其他数据库操作提供支撑
QSqlQuery——数据库查询类,提供基于Sql语法的query操作
QSqlTableModel——数据库表格模型类,可以很方便的把数据库的一张表直接对应到界面的TableView控件中,实现类似SQLite Expert之类的,数据库编辑器的功能

以上是在题主涉及领域中,最可能用到的功能

——————————————————————

以下是具体该从哪些角度上手:
1、对于零基础的,先从Hello World开始,再从默认的Qt Widget Application工程入手,逐步了解Qt的相关接口。
2、通过QTimer编写定时循环的程序,初步了解信号槽机制和Qt的基于事件响应的运行模式——Qt极度不推荐写while(true)之类的死循环,而是通过信号槽进行事件响应,通过QTimer进行循环工作。
4、通过Qt Widgets界面框架编写图形程序,逐渐熟悉信号槽机制,并了解如何编写简单的界面。例:带按钮的窗口,通过按钮触发各类前后台动作。
5、通过QFile、QFileInfo、QDir、QTextStream等,熟悉文件系统的运作
6、通过QThread编写带子线程的应用,通过信号槽进行跨线程通信——尽可能不进行任何跨线程直接调用,然后直观的感受信号槽和Qt线程的运作机制,体验不用互斥锁就能写数据安全的多线程应用的快乐。例:生产者/消费者模式,生产者不断生成数据,通过信号槽推送至消费者线程,然后进一步扩展,尝试一对多、多对一等方式。
7、通过QSqlDatabase、QSqlQuery,结合SQLite数据库,熟悉数据库操作
8、通过编写一个简单的C/S程序,熟悉网络操作,以及更重要的,熟悉QIODevice这套I/O机制。例:Echo程序,客户端启动后连接到服务端,用户输入信息,服务端接收到后返还一模一样的内容。
9、了解QIODevice机制,和基于事件响应的编程模式后,可以尝试通过QSerialPort和串口设备通信,比如弄个环境监测程序,通过定时器周期性采集温度传感器、湿度传感器、气压传感器、凤速传感器等的数据,并在界面实时展示,并记录在数据库中。
10、再然后就很随意了,到这一步,所积累的知识已经足够支撑编写答主所需的东西了——而且已经不仅仅只是大学课程设计那么简单,而是能足够在工作中实际运用,开发产品的技术。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 第一章 开发环境 1.1 Qt 简介5 1.2 下载安装 Qt Creator 6 1.3 第一个程序 Hello World 7 第二章 窗体应用 1.1 窗体基类说明 12 1.2 控制窗体大小 13 1.3 窗体初始位置及背景色 13 1.4 修改标题栏图标 14 1.5 移动无边框窗体 16 1.6 去掉标题栏中最大化、最小化按钮 17 1.7 多窗体调用 18 1.8 字体形状窗体 20 第三章 控件应用 1.1 QPushButton按钮 23 1.2 QLabel标签 23 1.3 QLineEdit单行文本 24 1.4 QTextEdit多行文本 25 1.5 QPlainTextEdit多行文本 26 1.6 QComboBox下拉列表框 26 1.7 QFontComboBox字体下拉列表框 27 1.8 QSpinBox控件 28 1.9 QTimeEdit时间控件 29 1.10 QDateEdit日期控件 30 1.11 QScrollBar控件 30 1.12 QRadioButton单选按钮 31 1.13 QCheckBox复选框 32 1.14 QListView 列表控件 34 1.15 QTreeView树控件 34 1.16 QTableView表格控件 35 1.17 QHBoxLayout横向布局 36 1.18 QGridLayout网格布局 37 1.19 QGroupBox控件 38 1.20 QTabWidget控件 39 1.21 QMenu、QToolBar控件 41 1.22 任务栏托盘菜单 43 第四章 组件应用 1.1日历组件 47 1.2登录窗口 48 1.3文件浏览对话框 50 1.4颜色选择对话框 51 1.5进度条实例53 1.6Timer实时更新时间 54 第五章 文件操作 1.1创建文件夹 57 1.2写入文件 58 1.3修改文件内容 60 1.4删除文件 62 1.5修改文件名 63 1.6 INI文件写入操作 65 1.7 INI文件读取操作 68 1.8创建XML文件 71 1.9读取XML文件 72 第六章 图形图像操作 1.1绘制文字 75 1.2绘制线条 75 1.3绘制椭圆 77 1.4显示静态图像 78 1.5显示动态图像 78 1.6图片水平移动 79 1.7图片翻转 80 1.8图片缩放 82 1.9图片中加文字 84 1.10图像扭曲 85 1.11模糊效果 85 1.12着色效果 86 1.13阴影效果 87 1.14透明效果 87 第七章 多媒体应用 1.1音频、视频播放器 90 1.2播放Flash动画 94 1.3播放图片动画 95 第八章 系统操作 1.1获取屏幕分辨率 98 1.2获取本机名、IP地址 98 1.3根据网址获取IP地址 99 1.4判断键盘按下键值 100 1.5获取系统环境变量 101 1.6执行系统命令 102 第九章 注册表 1.0简要说明注册表 105 1.1写入注册表 105 1.2查找注册表 106 1.3修改IE浏览器的默认主页 107 第十章 数据库基础 1.1查询数据库驱动 109 1.2Qodbc连接Access数据库 109 1.3插入数据 111 1.4数据列表 112 1.5操作SQLite数据库 113 1.6SQLite数据库视图管理器 115 第十一章 网络开发 1.1点对点聊天服务端 119 1.2点对点聊天客户端 123 1.3局域网广播聊天 128 1.4SMTP协议发送邮件 148 1.5调用系统DLL判断网络连接状态 152 第十二章 进程与线程 1.1进程管理器 155 1.2线程QThread应用 158 1.3线程QRunnable应用 159 第十三章 数据安全 1.1 QByteArray加密数据 163 1.2 AES加密数据 164 1.3 MD5 加密数据 165 1.4 生成随机数 166 第十四章 打包部署 1.1 FilePacker 打包 169 1.2 Inno Setup 打包 174

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值