先说结论:这篇文章面向的是“要在 Ubuntu 24.04 上把 Qt 开发环境从零搭起来,并且真的能跑起来”的人。Qt 版本、安装器、系统依赖、环境变量、输入法、平台插件这几个坑,我会按实际操作顺序一个个说清楚。你自己装的时候肯定会遇到其中几个,照着这篇走能省下起码一个下午的折腾时间。
我在 Ubuntu 24.04 上装 Qt 不止一次,从 Qt 5.15.2 到 Qt 6.5 LTS 都跑过。24.04 和早先的 22.04 或者 20.04 有个明显的差异:系统默认的 GCC 版本、OpenGL 相关库、Wayland/X11 的运行时库都不一样了。很多老教程拿到 24.04 上会直接报错,比如缺 libxcb-cursor0、Qt Creator 打不开、Qt 程序 “no platform plugin could be initialized” 等。这些问题本质上不是你代码的问题,而是环境没配齐。所以这篇文章不只要讲“怎么点下一步”,更要讲“为什么这一步必须做”。
如果你是纯新手,第一次在 Linux 上装 Qt,也不用怕。我会把每一步都拆开讲,包括安装包的下载方式、组件怎么勾、环境变量怎么配、第一个测试程序怎么写。如果你想在自己的 Qt 工程里用 QCustomPlot、QChart、串口这些功能,后面也有专门的依赖说明。
1. 安装前的思路与选型考量
1.1 在线安装器还是离线安装包?
Qt 官方提供两类安装方式:在线安装器(online installer)和离线安装包(offline installer)。在线安装器最大的好处是体积小,启动后按需下载你想要的大版本、模块和编译套件;坏处是如果你网络不稳,中途容易断,而且 Qt 官网的下载服务器在国内经常很慢。离线安装包则省事,下载后直接传到任意一台机器上就能装,适合离线环境或者公司内网批量部署,但缺点是单个包体积很大,比如 Qt 6.5.3 的离线包普遍在 1GB 以上。
我的建议是:如果你网络条件一般,优先尝试在线安装器 + 国内开源软件镜像站加速组合。具体怎么加速后面会说。如果你要装的是 Qt 5.15.2 这种已经进入“Archive”区域的版本,在线安装器勾选时需要先登录账号,并且要把安装源切到 archive 仓库,新手很容易卡在这一步。这时候用离线包反而更省心。
还有一点要提前确认:Ubuntu 24.04 自带的 apt 源里其实也有 Qt。直接 sudo apt install qt6-base-dev 就能装一套 Qt 6 开发库,但那是系统库版本,适合跑依赖 Qt 的桌面应用,不适合做完整 Qt 开发调试,因为你想装 Qt Creator、Qt Charts、Qt Multimedia 等一套全家桶就相对麻烦。所以本文默认用官方 SDK 安装器,把 Qt 装到 /opt/Qt 或 ~/Qt 目录,和系统 apt 库隔离。这样做的好处是不同项目可以用不同 Qt 版本,互不污染,风险是后续编译时要注意 PATH 和 CMAKE_PREFIX_PATH 指向正确。
1.2 版本选择:Qt 5.15.2 还是 Qt 6.x?
很多现在还在用 Qt 5.15.2 的项目,大多是从以前的老工程升级过来的。5.15.2 是 Qt 5 系列里最重要的 LTS 版本之一,兼容性好,大量开源库(比如 QCustomPlot、QSerialPort、QCharts)在 5.15.2 下很稳定,所以工业界存量很大。如果你没特殊要求,我建议不要盲目追新,先看你的工程依赖哪些模块。
Ubuntu 24.04 上同时装 Qt 5.15.2 和 Qt 6.5 LTS 是完全可以的,关键是安装目录不同、qmake/cmake 的路径不能搞混。实际开发中,同一个 Qt Creator 可以注册多个 Qt 版本和多个构建套件(Kit),这就是 Qt 官方推荐的多版本共存方式。我见过有的团队为了省事只装一个版本,结果项目升级时被 Qt 6 的 API 变化打了个措手不及。多装一个 LTS 备用,成本只是磁盘空间,收益却很大。
1.3 安装目录规划
Qt 官方安装器默认会装到 ~/Qt,也就是当前用户主目录下。装完之后路径大概是 ~/Qt/6.5.3/gcc_64,这里的 gcc_64 就是 Linux x86_64 桌面版的 Qt 库目录。个人开发用这个路径没问题,权限也简单。但如果你在团队服务器上,或者希望所有人共用一套环境,可以改成 /opt/Qt,安装时直接填路径 /opt/Qt 即可,前提是当前用户对 /opt 有写权限,或者先 sudo chown $USER /opt/Qt 创建好目录再装。
我自己更偏向装到 /opt/Qt。一是好找,二是后续配 CMake、配 CI、写文档都方便,路径稳定不变。而且如果不小心装坏了,删掉重装不影响主目录里一堆项目文件。记住一点:Qt 目录一旦装好,不要随便移动位置,因为安装器写的路径、.conf 配置文件、Qt Creator 自动检测的路径全是绝对路径,挪了目录后一堆东西会“失联”。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心安装流程与关键配置
2.1 下载安装器与镜像加速
先打开 Qt 官方下载页面,找到 “Download for open source users” 下的在线安装器链接,下载 Linux x64 后缀为 .run 的文件。当前在线安装器的命名形如 qt-online-installer-linux-x64-4.7.0.run。下载完成后,在终端里执行:
bash复制chmod +x qt-online-installer-linux-x64-4.7.0.run
./qt-online-installer-linux-x64-4.7.0.run
如果这一步你卡在下载速度上,有两个缓解手段。第一,用镜像站直接下载在线安装器或离线包;第二,在安装器登录后的设置里自定义 Qt 软件仓库,改成开源镜像站的 Qt 仓库地址。注意,改了仓库地址之后,版本列表的刷新速度和后续模块的下载速度都会有明显提升。
提示:如果你使用 Ubuntu 24.04 桌版,默认 Wayland 会话下运行安装器出现界面花屏、缺字、窗口空白,可以在运行安装器前先指定软件渲染:
QT_QPA_PLATFORM=xcb ./qt-online-installer-linux-x64-4.7.0.run,多数情况能解决。
2.2 注册登录与开源协议确认
运行安装器会首先要求登录 Qt 账号。这个账号在 Qt 官网免费注册,邮箱验证之后就能用。注册账号不是为了收费,而是因为现在 Qt 开源版下载和在线安装器都强制要求校验开源用户身份。到了协议确认界面,选 “Open Source” 开源版,再选 “Qt SDK”,继续进入到组件选择页。
有些同学会卡在登录环节:输入邮箱密码后提示 “Invalid credentials”,但网页端登录又没问题。我遇到过的原因多半是网络代理或者系统时间不对导致的 TLS 异常,可以先把系统时间同步一下,或者换一个网络环境再试。还有一个小技巧:如果你已经下载了离线安装包,不需要登录也能直接安装,这时候就不受官网服务器抖动影响。
2.3 组件选择的坑与勾选建议
组件选择界面会让很多新手犯难,因为树形目录很长,各种洋名字。我提供一个通用选择建议,足够覆盖绝大多数桌面应用开发需求:
| 类别 | 默认不装但建议勾选的选项 | 说明 |
|---|---|---|
| Qt 版本 | 以 Qt 6.5.3 为例,勾选 Qt 6.5.3 > Desktop Linux x86_64 |
这是桌面开发的 Qt 本体 |
| Qt 版本 | Qt 5.15.2 > Desktop gcc 64-bit(如需要) |
老项目长期支持版本 |
| 附加模块 | Additional Libraries 下的 Qt Charts、Qt Data Visualization、Qt Multimedia |
图表、多媒体常用 |
| 开发工具 | Qt Creator、Qt Creator 源码调试符号 |
至少装 Qt Creator |
| 开发工具 | Additional Libraries 里的 Qt Debug Information Files |
调试时用,没多大但建议勾 |
| 工具链 | 如果装器提示 CMake、Ninja 缺失,先跳过 |
后面用 apt 装系统版更稳 |
| 工具链 | MinGW 系选项在 Linux 上不需要 |
那是 Windows 交叉编译用的 |
实际上在线安装器在 Linux 桌面上会默认帮你勾选 Qt Creator 和 Qt 6 相应组件,你主要确认的是:桌面库要勾上(Qt 6.5.3 那个大项),别只勾了一堆编译工具没勾本体。装完后你会发现 ~/Qt/6.5.3 目录下有一个 gcc_64 文件夹,里面有 bin、include、lib、plugins、qml 等子目录。这就是 Qt 的全部内容。
注意:Qt 5.15.2 在安装器的默认仓库里可能看不到。需要先在上一步的自定义仓库设置里把镜像仓库地址指向 Qt Archive,或者直接下载 Qt 5.15.2 离线安装包单独安装。这个版本已经从“默认仓库”挪到“归档仓库”,所以在线安装器界面默认列表里没有它,是正常的。
3. 系统依赖安装与 Qt Creator 环境配置
3.1 必装系统依赖包
很多 Qt 程序装完后一运行就报平台插件错误,或者 Qt Creator 双击图标起不来,90% 的原因是系统缺少运行库。Ubuntu 24.04 的最小化安装下,下面这些包十有八九得手动装:
bash复制sudo apt update
sudo apt install build-essential libgl1-mesa-dev libglu1-mesa-dev \
libxkbcommon-x11-0 libxkbcommon-dev libxcb-cursor0 \
libxcb-icccm4 libxcb-image0 libxcb-keysyms1 \
libxcb-render-util0 libxcb-shape0 libxcb-xinerama0 \
libxcb-xkb1 libx11-xcb1 libsm6 libice6
逐个解释一下为什么需要这些包。libgl1-mesa-dev 和 libglu1-mesa-dev 是 OpenGL 开发库,Qt 的渲染引擎和 Qt Quick 3D 都要用到;libxcb-* 系列是 X11 的通信协议库,Qt 的 xcb 平台插件会动态加载它们,缺一个就可能在运行时报 Failed to load platform plugin "xcb";libxkbcommon-x11-0 是键盘映射相关;libxcb-cursor0 是 Ubuntu 24.04 上特别容易漏的一个包,因为它是 Qt 6.5 之后才强依赖的,很多老教程没提到它。
装完这些依赖后再启动 Qt Creator,应该就能流畅打开。如果你还用到了串口、蓝牙、网络、多媒体这些功能,再补下面这些开发包:
bash复制sudo apt install libqt5serialport5-dev qtbase5-dev qt5-qmake \
libqt5charts5-dev libqt5multimedia5-dev
其中 libqt5serialport5-dev 是 Qt 5 串口模块的开发头文件,这个包名在 Ubuntu 24.04 里叫 libqt5serialport5-dev;如果要用 QCustomPlot,它不归属于官方模块,直接在项目里加入 qcustomplot.cpp 和 qcustomplot.h 源码编译就行,但需要注意 QCustomPlot 依赖 Qt 的 printsupport 模块,工程文件里要加上 QT += printsupport。五年前我第一次用 QCustomPlot 时就在这一步栽过跟头,光加了 core 和 widgets,结果编译直接报一堆 undefined reference。QCustomPlot 还常被用来做时域频域转换显示,比如结合 FFT 算法把时域波形成频域谱线,这时候一般还需要 qcustomplot 的重新绘制接口配合数据更新,这个后面单独展开。
3.2 设置环境变量:PATH 与 Qt 平台路径
如果你用的是 Qt 安装器自带的 Qt Creator,其实 Qt Creator 内部会自动检测 Qt 路径,你不需要额外设置环境变量也能编译运行。但如果你要从命令行里执行 qmake、rcc、uic、windeployqt 这些工具,或者用 CMake 直接构建工程,就必须把 Qt 的 bin 目录加到 PATH 里。
以 Qt 6.5.3 为例,在 ~/.bashrc 文件末尾追加:
bash复制export PATH="$HOME/Qt/6.5.3/gcc_64/bin:$PATH"
如果你装到了 /opt/Qt,路径就换成 /opt/Qt/6.5.3/gcc_64/bin。追加完执行 source ~/.bashrc,然后运行:
bash复制qmake --version
能看到类似 QMake version 3.1 和 Using Qt version 6.5.3 的输出,说明 qmake 已经可用了。
还有一个重要变量 QT_QPA_PLATFORM_PLUGIN_PATH,它告诉 Qt 程序到哪里找平台插件(platform plugin)。正常安装的 Qt 会在 gcc_64/plugins 目录下自带 platforms 子目录,里面有 libqxcb.so。如果你在命令行里运行一个自己编译的 Qt 程序,却提示找不到平台插件,可以手动指定:
bash复制export QT_QPA_PLATFORM_PLUGIN_PATH="$HOME/Qt/6.5.3/gcc_64/plugins"
这个变量也被用于强制使用某个平台后端。比如你想强制走 X11 而不是 Wayland,运行程序前加上 QT_QPA_PLATFORM=xcb 即可。那个搜索热点“windows no qt platform plugin could be initialized · reinstalling the application”虽然是 Windows 上的问题,但原理一样:要么是插件路径错了,要么是插件依赖的库不全,导致 Qt 程序初始化失败。
3.3 Qt Creator 中构建套件(Kit)的自动检测与手动微调
第一次打开 Qt Creator,它会自动扫描系统里的编译器、调试器、CMake 和 Qt 版本。进入“工具”->“选项”->“Kits”界面,你会看到默认生成的一个构建套件,一般是类似 “Desktop Qt 6.5.3 GCC 64bit” 的名字。正常情况下它会自动检测到:
- 编译器:系统自带的
gcc、g++(Ubuntu 24.04 默认是 GCC 13) - 调试器:
gdb - CMake:系统 apt 版或者 Qt 安装器自带的 CMake
- Qt 版本:你安装的 6.5.3 gcc_64
检测正常后,建议手动确认两点。第一,点击“Qt Versions”标签,看 qmake 路径是否指向你想要的版本,比如 ~/Qt/6.5.3/gcc_64/bin/qmake;第二,点击“编译器”标签,确认 C 和 C++ 编译器不是 “/usr/bin/gcc 和 /usr/bin/g++,调试器选择 /usr/bin/gdb,CMake 选择 /usr/bin/cmake。
这里有个常被忽略的点:如果你同时安装了 Qt 5.15.2 和 Qt 6.5.3,Qt Creator 会生成两个套件。新建项目时一定要在“构建套件选择”页勾选你打算用的那个。我就见过有同事用 Qt 6 的 Creator 默认套件去编译一个依赖 Qt 5 模块的工程,结果报出各种找不到 QStringList 头文件的诡异错误——其实是套件版本不匹配,不是代码问题。
3.4 第一个测试程序:验证安装是否成功
环境配置不是玄学,跑一个最简单的 Qt Widgets 程序就知道到底行不行。我在终端里新建一个测试目录,手工写一个最小工程:
bash复制mkdir ~/qt_test && cd ~/qt_test
main.cpp 内容如下:
cpp复制#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label("Hello, Qt on Ubuntu 24.04!");
label.resize(300, 100);
label.show();
return app.exec();
}
工程文件 test.pro 如下:
pro复制QT += widgets
SOURCES += main.cpp
TARGET = qt_test
然后在终端执行:
bash复制qmake
make -j$(nproc)
./qt_test
如果屏幕上弹出一个带文字的窗口,说明 Qt 库、编译器、平台插件、运行库全部正常。如果报错,优先看是不是 QXcbConnection: Could not connect to display,这在远程 SSH 或容器里很常见,需要走 QT_QPA_PLATFORM=offscreen 或者把 X11 转发配好。平时在本地桌面环境下,这个测试程序是能直接出窗口的。
提示:在 VMware 虚拟机里的 Ubuntu 24.04 上跑 Qt 程序,如果窗口渲染异常卡顿或出现黑色区域,可以试试环境变量
QT_OPENGL=software,强制使用软件渲染。虚拟机的 OpenGL 驱动往往支持不完整,硬解反而拉低体验。
4. 高频问题实录与排查技巧
4.1 输入法问题:fcitx5 开机未启动、中文界面模糊
很多搜“Ubuntu24.04 fcitx5 开机未启动”的朋友,其实是被中文输入法折腾的。Qt 5 程序对 fcitx5 的输入法支持需要额外的前端插件。如果系统里装的是 fcitx5,但 Qt 程序里按不出中文,基本都是因为缺少 fcitx5-frontend-qt5 或者 fcitx5-frontend-qt6 这个包:
bash复制sudo apt install fcitx5-frontend-qt5 fcitx5-frontend-qt6
装完重启 Qt 程序或者重新登录系统,输入法一般就能在 Qt 应用里唤醒了。另一个现象是 Qt 程序界面文字发虚、模糊,尤其是中文 UI,这通常不是安装问题,而是字体渲染和 DPI 缩放设置问题。可以在 Qt Creator 里调整“界面”->“字体与颜色”或系统“显示设置”里的缩放比例;Ubuntu 24.04 在高分屏上默认开启 Wayland 的分数缩放,Qt 程序在 XWayland 下有时会糊,切换 QT_QPA_PLATFORM=wayland 让 Qt 原生跑在 Wayland 下通常能解决一部分问题。
4.2 平台插件错误:“no Qt platform plugin could be initialized”
这类报错我见过太多次,尤其是在打包发布 Qt 程序时。完整报错一般是:qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in "" 和 This application failed to start because no Qt platform plugin could be initialized。
排查顺序按照性价比来:
| 检查项 | 命令/位置 | 说明 |
|---|---|---|
| 插件目录是否存在 | ls $HOME/Qt/6.5.3/gcc_64/plugins/platforms |
至少要有 libqxcb.so |
| 插件路径是否被找到 | 设置 QT_QPA_PLATFORM_PLUGIN_PATH |
手动指向 plugins 目录 |
| XCB 相关运行库是否完整 | ldd $HOME/Qt/6.5.3/gcc_64/plugins/platforms/libqxcb.so |
看有没有 missing 的库 |
| 平台插件依赖的库是否缺失 | 安装缺失依赖后重试 | 常见是 libxcb-cursor0 |
如果 ldd 显示有找不到的库,比如提示 libxcb-cursor.so.0 => not found,那就用 sudo apt install libxcb-cursor0 解决。Windows 端遇到同类问题时,做法基本等价——、把 Qt 的 plugins 目录整体放到可执行文件旁边,或者用 windeployqt 工具自动收集 DLL。Linux 端虽然没有 windeployqt 那种图形化一键打包神器,但可以借助 linuxdeployqt 做类似的事情。这个工具对新手有点难度,但它能自动把 Qt 库和插件收集到同一个目录,是发布 Linux Qt 程序最常用的方案。
4.3 卸载与重装:如何干净移除 Qt
如果安装的 Qt 版本太乱、路径不对、或者组件选错了,卸载重装是最省事的选择。Qt 官方 SDK 自带维护工具 MaintenanceTool,它位于 Qt 安装目录根目录下,比如 ~/Qt/MaintenanceTool 或 /opt/Qt/MaintenanceTool。运行它之后,选“卸载”就能按组件删除。
需要注意,如果当初是用 apt 装的 Qt 相关包,卸载时要用 sudo apt purge 按包名清理,不能混着用。我自己常用的清法是:
bash复制sudo apt purge 'qt6-*' 'qtbase5-*' 'libqt5*'
sudo apt autoremove
rm -rf ~/.cache/QtProject ~/.config/QtProject
最后两个目录存放了 Qt Creator 的配置和缓存,删掉后重新打开的 Qt Creator 会回到“初见”状态,适合解决界面错乱、套件混乱的问题。删之前记得备份你的工程代码,Qt Creator 的构建缓存目录一般在工程的 build-* 目录,也一并清掉,避免后续 CMake 用旧缓存指向不存在的 Qt 路径。
4.4 其他值得留意的坑:OpenGL、CMake 和离线环境
Ubuntu 24.04 对 OpenGL 的依赖比老版本更敏感。Qt 程序如果报 Could not initialize OpenGL,尤其在虚拟机或某些笔记本双显卡环境下,先启动 Mesa 软件渲染:export LIBGL_ALWAYS_SOFTWARE=1。如果这个变量能救回来,说明显卡驱动有问题,回头装对应的 NVIDIA/AMD 驱动就行,不必动 Qt 本身。
CMake 配置方面,新版 Qt 推荐用 CMake,但系统 apt 的 CMake 版本可能偏低。安装 Qt 时,在线安装器也提供了 CMake 和 Ninja,但路径藏在 Qt 目录里,Qt Creator 默认用的是它自己检测到的 CMake。如果命令行用户想用 Qt 自带的 CMake,PATH 里也要加对应的 Tools/CMake/bin。复杂的项目建议统一用 Qt Creator 的 Kit 设置,避免命令行和 IDE 版本不一致出现莫名奇妙的构建失败。
离线环境安装 Qt 是最容易踩坑的。要么直接下载完整离线安装包,要么找一台能联网的机器用在线安装器装完,再把整个 Qt 目录打包带走。后者听起来方便,但里面很多程序配置路径是绝对路径,到了新机器上不一定能用,需要 sed 替换或者重跑安装器修复。从省心角度,我建议离线环境直接找离线包,一次性装好,别折腾目录拷贝。
5. 安装之后的实用增强与扩展
5.1 给 QCustomPlot、QChart 等可视化库铺路
装好 Qt 后,很多人的下一步不是写业务,而是想快速看到数据可视化的效果。QCustomPlot 非常适合“时域图转频域图”这类场景,它本身是一套开源 C++ 图形库,不需要单独安装,直接把源码加进工程即可。我在工程文件里是这么用的:
pro复制QT += widgets printsupport
CONFIG += c++17
SOURCES += main.cpp qcustomplot.cpp
HEADERS += qcustomplot.h
QCustomPlot 的绘图效率很高,曲线动态刷新到每秒几十帧都没问题。做 FFT 频谱显示时,我一般会把采集到的时域数据用 kissfft 之类的库做一次傅里叶变换,再把幅度谱数据塞给 QCustomPlot 的 graph(0)->setData(),配合 xAxis->setRange() 刷新坐标轴。注意 QCustomPlot 在大量数据点下要开启自适应采样,否则可能卡顿。
如果用的是 Qt Charts,逻辑类似,但 Qt Charts 属于官方模块,必须在安装器阶段勾选,否则编译器会报 QtCharts/QChartView 头文件找不到。Qt Charts 的好处是代码更简短,它的交互缩放、图例、主题这些现成能力很强,特别适合做仪表盘类的界面。
5.2 串口、ROS2、Docker 与 Qt 开发的共存经验
Ubuntu 24.04 上很多开发者不止装 Qt,还会装 ROS2、Docker、ESP-IDF、Anaconda 这一大堆环境。这些环境共享系统的环境变量和库路径,很容易冲突。我的经验是:Qt 和这些工具不要混在一个 shell 配置文件里。比如 ROS2 的 source /opt/ros/humble/setup.bash 和 Qt 的 PATH 是可以共存的,但 Anaconda 的 conda activate 会把 PATH 强行改掉,导致 qmake 找不到了。建议把 Qt 的 PATH 写入 ~/.profile 或 ~/.bashrc 靠前的位置,把 Anaconda、ROS 这些按需 source 到独立的终端配置里,而不是全部挤在 ~/.bashrc。
用 Docker 跑 Qt 程序是另一个话题。容器里通常没有 X server,需要把宿主机的 X11 socket 挂载进去:
bash复制xhost +local:
docker run -it --net=host \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v /dev/dri:/dev/dri \
my-qt-image
当然这是传统 X11 方案,Wayland 下要复杂一些,但原理都是把宿主机的图形接口暴露给容器。如果你只是做 Qt 交叉编译或者独立的命令行构建,容器就是标准的无界面运行,不需要这些设置。
5.3 命令行构建进阶与常用配置模板
最后分享一个我一直在用的 Qt 开发环境检查脚本,适合新机器部署后快速自检。把它保存为脚本,逐行执行:
bash复制echo "== Qt version =="
qmake --version
echo "== XCB plugin =="
ls -l $HOME/Qt/6.5.3/gcc_64/plugins/platforms/libqxcb.so 2>/dev/null || echo "missing libqxcb.so"
echo "== XCB deps =="
ldd $HOME/Qt/6.5.3/gcc_64/plugins/platforms/libqxcb.so 2>/dev/null | grep "not found" || echo "all dependencies satisfied"
echo "== GCC/G++ =="
gcc --version | head -1
g++ --version | head -1
echo "== CMake =="
cmake --version | head -1
如果你要写 CMake 工程而不是 qmake 工程,最基础的 CMakeLists.txt 是这样:
cmake复制cmake_minimum_required(VERSION 3.16)
project(qt_test)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_PREFIX_PATH "$ENV{HOME}/Qt/6.5.3/gcc_64" ${CMAKE_PREFIX_PATH})
find_package(Qt6 REQUIRED COMPONENTS Widgets)
qt6_add_executable(qt_test main.cpp)
target_link_libraries(qt_test PRIVATE Qt6::Widgets)
注意 CMAKE_PREFIX_PATH 一定要指向你的 Qt 安装目录,否则 find_package(Qt6) 找不到包,报错信息也不直观。命令行构建如下:
bash复制cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
./build/qt_test
这套流程自动化程度更高,适合你后续接 CI 或者封装成脚本。Qt 官方现在也在逐步把重心转移到 CMake,新项目我建议直接用 CMake 起步,老工程再继续用 qmake 维护也行。
装 Qt 这件事本身不复杂,但中间涉及选版本、装依赖、配环境、调插件,每一步都可能卡十分钟。我在 Ubuntu 24.04 上从零装完一套 Qt 6.5.3 并跑通测试程序,顺利的话二十分钟出头就够了;要是网络不稳、依赖缺库、输入法再闹脾气,搞上大半天也正常。写这篇文章就是希望大家不用再把我踩过的坑重新踩一遍,照着这个流程走,遇到问题也能快速定位到具体环境配置层面。还是要多说一句:遇到报错先别急着重装 Qt,九成问题出在系统依赖或路径配置上,用 ldd 和 QT_QPA_PLATFORM_PLUGIN_PATH 排查,比重新下载两 GB 的安装包要靠谱得多。祝大家都能顺利让那一行 “Hello, Qt” 窗口弹出来。
