Qt开发-Qt环境安装及程序打包

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版本。

image-20241202104815657

编译器的选择

Qt编译器应该选择MinGW还是MSVC?

如果使用Python开发不涉及C++编译可以不用安装。

  • MinGW:适合跨平台开发,保持一致的开发环境和命令行工具。
  • MSVC:适合 Windows 平台开发,提供高性能和完整的 Windows 支持。

环境变量

添加安装目录的地址到环境变量

1
D:\Tools\Qt\6.9.0\mingw_64\bin

开发工具推荐

Qt Creater

官方提供的工具功能比较强大,但是界面字体太小,代码提示及格式化功能不太强,但是对QML的支持比IDEA好。

IDEA/PyCharm

安装Python插件和QML Editor插件即可。

image-20211102142535061

安装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
2
3
4
[global]
index-url = https://mirrors.huaweicloud.com/repository/pypi/simple
trusted-host = mirrors.huaweicloud.com
timeout = 120

临时生效

1
pip install pyside2 -i https://mirrors.huaweicloud.com/repository/pypi/simple

UI选择

PySide为我们提供了两种开发界面的方式:

  • 一种叫Qt Widgets,是在网上教程中最常见的方式;

  • 另一种叫Qt Quick或者QML,是一种新型的开发方式,也是Qt正在努力推广的开发方式。

两种方式对比:

img

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位版本的。

创建项目

image-20211101190352164

前两个都是用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

image-20211102001913029

打包命令

1
pyinstaller mainwindow.py -Fw

这种方式打出的是单文件,所以后面的两种不能用这种方式,因为后两种需要复制界面文件。

方式3

image-20211102001554811

打包命令:

1
pyinstaller mainwindow.py --noconsole --hidden-import PySide2.QtXml

项目下就会生成dist目录,里面就有生成的exe。

但是运行报错,我们要把界面文件复制到生成的目标根目录,比如form.ui.

方式4

image-20211102001617418

打包命令:

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就会自动生成。

应用程序图标是放在可执行程序里面的资源。

可以在PyInstaller创建可执行程序时,通过参数 --icon="logo.ico" 指定。

比如

1
pyinstaller main.py --noconsole --hidden-import PySide2.QtXml --icon="logo.ico"
1
2
pyinstaller --onefile --windowed --add-data "imgs/*;imgs/" main.py
pyinstaller --windowed --add-data "imgs/*;imgs/" main.py

注意参数一定是存在的ico文件,不能是png等图片文件。