本系列文章介绍笔者的Qt实践之路。
背景
笔者首次接触 Qt 大约是十多年前,当时试用了 Qt ,觉得不如 MFC 好用。现在 Qt 的 API、文档等都比较完善,在年初决定重新拾起,正所谓技多不压身,将 Qt 当为一种谋生工具亦未尝不可。利用春节假期的集中时间,快速专攻一下。
本系列名为“Qt实践”,故不是教程,笔者对 Qt 的定位是“使用”,可以帮助快速编写日常的工具,如串口、网络等。所以不是以研究 Qt 机制或原理为目的的。代码片段有些是伪代码,有些是测试所用,有些是项目所用。
下载
Qt下载地址:http://download.qt.io/official_releases/qt,下载相应的 windows 或 linux版本,安装即可。网速快者可从官方下载,也可从国内镜像服务器(官方认证)下载。
本系列使用 Qt 5.14 windows 版本 + VS 2015 编译器。
本系列源码仓库: https://github.com/latelee/QtDemo 。
注意,为最大程度复用代码,各大窗体工程使用默认值,如类MainWindow
表示QMainWindow
,类Widget
表示QWidget
,类Dialog
表示QDialog
。对应的源文件、设计文件亦然。
修改编译目录
默认目录修改:
../%{JS: Util.asciify("build-%{CurrentProject:Name}-%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}")}
./%{JS: Util.asciify("%{CurrentBuild:Name}")}
发布
添加环境变量:
D:\Qt\Qt5.14.0\5.14.0\msvc2015_64\bin
使用 windeployqt.exe 工具。
进入最终二进制文件目录,执行:
windeployqt.exe .
注:将拷贝大量的dll,体积较大。
TODO:打包为一个exe待实验。
经验
只改UI文件,不修改实现文件,运行时不会重新编译,还是旧程序。
先布局,再放控件。反之不行。控件已有响应代码,删除控件,再新加,改名为原有的,亦可用。
demo.pro.user 保留设置好的信息,如路径,版本管理时,不纳入,也不发布。否则,路径可能有问题(拷贝原工程到新目录,路径还是原来的)。将pro拖动到Qt Creator可打开。会重新生成pro.user文件。
pro文件名称即为工程名称,可以修改。
界面中文乱码:在头文件添加#pragma execution_character_set("utf-8")
。源码保存为 UTF8 BOM格式。
错误:常量中有换行符。使用notepad++ 保存 UTF8 BOM格式。
qApp,指向 Application 的全局变量。可如此用:qApp->arg(0); qApp->quit(); qApp->exit(0);
主文件可使用默认名称,这样方便快速迁移、重建项目。如资源图标、主窗口初始化等常用的功能,无须手动再改。
编程备忘
自定义槽放到private slots:
的开始处。因为自动添加的会自动放置后面。
自定义槽格式为:on_myXXX
,信号为sig_myXXX
。系统自动添加的形式为on_<控件对象名>_<控件事件名>
,如按钮单击事件槽函数为on_btnSaveRecv_clicked
。
控件名称:
button:btn
checkbox:ckb
combobox:cbb(或lst)
Debug 工程的当前目录为工程根目录下的 Debug 目录。非工程根目录。
工程相关
Qt Creator 快捷键
alt+shift+r:预览界面
ctrl+r:运行
按钮大小、位置:选择控件,可多可少。
上下左右光标:移动,间隙较大。
ctrl+上下左右光标:间隙较少(用于精细对齐)
ctrl+shift+上下左右光标:调整大小,注:以控件左侧、顶部为基准。
不同控件,高度不同,可通过调整其某些控件的大小或精细调整位置实现对齐。
类似VS的多控件左右对齐:暂无。
工程文件.pro
QT +=
后添加必须的 Qt 库。如核心库 core,GUI 界面库 network,串口库 serialport,网络编程 network。
DEFINES +=
后添加宏定义,默认有 QT_DEPRECATED_WARNINGS
。
SOURCES
源码,HEADERS
头文件,FORMS
界面设计文件。
RC_ICONS
程序图标ico。
RESOURCES
资源文件。
win32: LIBS +=
库文件。如 -luser32
,系统级别库不用加路径。注:前面有 win32
,可能涉及跨平台有用。
转载:https://blog.csdn.net/subfate/article/details/104106298