Qt下载
版本选择
腾讯Qt镜像站
https://mirrors.cloud.tencent.com/qt/official_releases/
Qt 5.15 LTS 是支持 Windows 7 的最后一个版本,如果你的项目需要保持 Windows 7 兼容性,建议使用这个版本。
不考虑Win7兼容可以使用新版的Qt6。
最后一个可离线安装的版本是5.14.2
但是Qt5中更建议使用5.15:
- 如果你需要用到 QtWebkit,则只能用 Qt5.5及其以前的版本。
- 如果你需要 PDF 的支持,建议升级至 5.15,因为新增模块 Qt PDF
- 如果你需要 SSL 的支持,建议升级至 5.15,因为 5.13 开始已自支持 OpenSSL 1.1 及其以上。
- 如果你常用 QImage,建议升级至 5.15,因为缩放和转换的许多方法都升级成多线程的。
- 如果你常用 QtQuick,建议升级至 5.15,因为 5.14 开始 QtQuick 不再局限于 OpenGL 引擎加速。
- 如果你常用 QNetworkAccessManager,建议升级至 5.15,因为开始支持超时设置 setTransferTimeout
- 如果你发行在 Windows 平台,建议升级至 5.15,因为 5.14 开始对高DPI的设备有更好的支持。
- 如果你需要开发 安卓APP,建议升级至 5.15,因为该版本完善了安卓开发文档。
下载安装
腾讯Qt镜像站
https://mirrors.cloud.tencent.com/qt/official_releases/
在线安装
使用PoswerShell
1 | .\qt-online-installer-windows-x64-online.exe --mirror https://mirrors.ustc.edu.cn/qtproject |
安装的时候默认只有Qt6.x版本,这里需要勾选右边的Archive
,再点击筛选
,这时就会出现之前的Qt版本。
编译器的选择
Qt编译器应该选择MinGW还是MSVC?
如果使用Python开发不涉及C++编译可以不用安装。
- MinGW:适合跨平台开发,保持一致的开发环境和命令行工具。
- MSVC:适合 Windows 平台开发,提供高性能和完整的 Windows 支持。
环境变量
添加安装目录的地址到环境变量
1 | D:\Tools\Qt\6.9.0\mingw_64\bin |
开发工具推荐
官方提供的工具功能比较强大,但是界面字体太小,代码提示及格式化功能不太强,但是对QML的支持比IDEA好。
安装Python
插件和QML Editor
插件即可。
安装Python
下载
这里我直接整理了64位和32位的3.8.1版本下载链接给大家:
推荐安装32位,如果程序只需要在64位环境运行可以下载64位的。
官方下载地址:https://www.python.org/downloads/
请注意,一定要勾选 Add Python 3.8 to PATH,这样可以将 Python 命令工具所在目录添加到系统 Path 环境变量中,以后开发程序或者运行 Python 命令会非常方便。
其他我们保持默认即可,然后点Install Now
即可完成安装。
注意:
win7下只能下载安装python3.9以下(不包含python3.9)的版本。因为python3.9已经不再支持win7了。
设置镜像源
永久生效
进入当前用户目录中(Windows + R
输入 .
),创建pip
文件夹,pip文件夹中创建配置文件 pip.ini
。
复制以下内容
1 | [global] |
临时生效
1 | pip install pyside2 -i https://mirrors.huaweicloud.com/repository/pypi/simple |
UI选择
PySide为我们提供了两种开发界面的方式:
一种叫Qt Widgets,是在网上教程中最常见的方式;
另一种叫Qt Quick或者QML,是一种新型的开发方式,也是Qt正在努力推广的开发方式。
两种方式对比:
Python接口选择
QT对Python也有完善API支持,意味着我们可以规避C++编程的苦恼,使用更简洁的Python来代替C++开发QT应用,同样具备跨平台等优势。
目前有两种QT对应的Python工具:PySide和PyQt。
这里首先介绍下两者的区别:
PySide是Qt公司的产品,PyQt是第三方公司的产品,二者用法基本相同,不过在使用协议上却有很大差别。PySide可以在LGPL协议下使用,PyQt则在GPL协议下使用。这两个协议的区别就是如果使用PyQt,那么你开发的软件必须开源,否则就存在被告的风险。而PySide就没有这种约束,不管是开发商业闭源软件还是开源软件,你都可以不开源代码,开不开源是你的自由。从这一点上来看,对于商业公司或者说有商业考虑的软件来说,我更倾向于推荐PySide,更何况PySide还是QT的亲儿子。
PySide目前常见的有两个版本:PySide2和PySide6。
PySide2由C++版的Qt5开发而来.,而PySide6对应的则是C++版的Qt6。
从PySide6开始,PySide的命名也会与Qt的大版本号保持一致,不会再出现类似PySide2对应Qt5这种容易混淆的情况。
在使用层面上,PySide2和PySide6无过多的差异,只有一点需要注意,使用PySide6开发的程序在默认情况下不兼容Windows7系统,这也是Qt6所决定的(即使是C++的QT6也不支持windows7)。
PySide6只能在64位环境安装,要求Python是64位版本的。
创建项目
前两个都是用C++开发,第三个是用Python开发。
这里就选择使用Python开发,后面又有4个选项
第一个是空项目,有基本的代码但是没有创建窗口。
第二个能运行有窗口但是UI和逻辑是在一个文件中。
第三个是分离的,UI使用的是XML的形式,可以图形化界面编辑。
Qt Widgets + QSS
第四个也是分离的,UI是用的QML和Flutter写UI的方式很像。
QML:这是 Qt 为 Qt Quick 打造的描述界面的新语言,然而就语法上,基本就是对 Javascript 做了扩展。几乎所有 Javascript 的语法都可以使用。
这里推荐选后两个即可。
发布程序
安装pyinstaller
1 | pip install pyinstaller |
生成exe
方式1和2
打包命令
1 | pyinstaller mainwindow.py -Fw |
这种方式打出的是单文件,所以后面的两种不能用这种方式,因为后两种需要复制界面文件。
方式3
打包命令:
1 | pyinstaller mainwindow.py --noconsole --hidden-import PySide2.QtXml |
项目下就会生成dist目录,里面就有生成的exe。
但是运行报错,我们要把界面文件复制到生成的目标根目录,比如form.ui
.
方式4
打包命令:
1 | pyinstaller main.py --noconsole --hidden-import PySide2.QtXml |
同样我们也要把界面文件复制过来,如main.qml
C++构建与打包
如果用的C++方式,运行是直接生成exe的,但是无法运行
默认构建后,目录下的exe不能运行,会缺少依赖的DLL。
添加环境变量(根据自己Qt的安装路径修改)
D:\Tools\Qt\6.2.1\mingw81_64\bin
进入exe的生成目录运行
1 | windeployqt.exe 程序名称.exe |
这样所有依赖的DLL就会自动生成。
设置Logo
应用程序图标是放在可执行程序里面的资源。
可以在PyInstaller创建可执行程序时,通过参数 --icon="logo.ico"
指定。
比如
1 | pyinstaller main.py --noconsole --hidden-import PySide2.QtXml --icon="logo.ico" |
1 | pyinstaller --onefile --windowed --add-data "imgs/*;imgs/" main.py |
注意参数一定是存在的ico文件,不能是png等图片文件。