飞道的博客

Qt实践录:开篇

295人阅读  评论(0)

本系列文章介绍笔者的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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场