ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Qt5.12安装实战:工业级稳定部署与交叉编译避坑指南

Qt5.12安装实战:工业级稳定部署与交叉编译避坑指南 1. 为什么是Qt5.12不是最新版也不是最老版它卡在了一个“真·干活用得上”的黄金位置Qt5.12这个版本在我经手的上百个工业控制、嵌入式HMI、跨平台桌面工具项目里出现频率高得离谱——不是因为它是官方LTS长期支持版本这种教科书说法而是因为现实世界里的“稳定”和“能用”从来就不是靠版本号标出来的。Qt5.12.12是Qt5系列最后一个LTS版本2023年12月才正式结束官方支持这意味着你今天装上明年、后年甚至再往后两三年只要不碰极端新硬件或操作系统大版本升级它大概率不会突然罢工。我去年给一家做电力巡检终端的客户做二次开发他们产线还在跑Qt5.12.3内核是Linux 4.19ARM Cortex-A7芯片连Qt Creator都还是4.12.2——不是他们不想升是升了之后QPainter在LCD屏上的抗锯齿会错位一个按钮边缘发虚验收时就被打回来三次。这就是Qt5.12的真实处境它不是技术最炫的但它是你写完代码、编译打包、烧进设备、通电开机后最可能“啪一下就亮了”的那个版本。你搜到的那些热词比如“orangepi cm5安装qt5 交叉编译”、“qt5无法拖拽文件”、“qt5 qstring file not find”全都是Qt5.12在真实场景里磕出来的坑。Orange Pi CM5用的是Rockchip RK3566交叉编译链要配arm-linux-gnueabihf-gcc 9.3但Qt5.12源码里默认找的是gcc 8.x不改configure脚本直接报错“无法拖拽文件”根本不是Qt bug而是Qt5.12在Wayland会话下默认禁用了DNDDrag Drop协议你得手动在main.cpp里加qputenv(QT_QPA_PLATFORM, xcb);切回X11至于“QString file not find”八成是你用qmake生成的Makefile里INCLUDEPATH没把src目录加进去或者.pro文件里写了HEADERS $$PWD/../common/xxx.h但实际路径是$$PWD/common/xxx.hQt5.12的qmake解析路径比Qt6宽松但比Qt4严格这种小偏差它就默默跳过编译不报错运行时报QString未定义。所以这篇教程不讲“怎么点下一步”而是带你把每个安装环节背后的“为什么必须这样”掰开揉碎——比如为什么官网下载页里Qt5.12.12的Windows离线包有三个Qt5.12.12_x64_msvc2017_64.exe、Qt5.12.12_x64_msvc2019_64.exe、Qt5.12.12_x64_mingw73_64.exe它们的区别不是“哪个更新”而是你电脑上有没有装Visual Studio 2017/2019或者你愿不愿意忍受MinGW编译速度慢30%但免装VS的代价。这就像选螺丝不是看螺纹越细越好而是看你的扳手能不能卡住它。2. 安装前必须搞清的三件事环境、依赖、和你的真实目标2.1 先问自己你到底要拿Qt5.12来干什么这个问题决定你装什么、怎么装、装多少。我见过太多人一上来就勾选“全部组件”结果硬盘少了12GBC盘红了最后发现只用到了Widgets模块连Qt Quick的影子都没见着。根据我处理过的项目归类Qt5.12的使用场景基本就三类桌面应用开发Windows/macOS/Linux这是最常见的情况比如你要做个数据采集上位机、实验室仪器控制软件、内部OA系统。这类需求核心是QWidget、QMainWindow、QFileDialog这些控件顺带需要Qt Network发HTTP请求、Qt SQL连SQLite或MySQL。安装时重点勾选Qt 5.12.12下的MSVC 2017 64-bitWin或macOSMac或Desktop gcc 64-bitUbuntu再加Developer and Designer Tools里的Qt Creator和Qt Designer。其他像Qt WebEngine、Qt 3D这种除非你明确要做网页嵌入或三维可视化否则别碰——WebEngine光Chromium内核就占3GB编译一次要2小时。嵌入式Linux交叉编译如Orange Pi、树莓派、i.MX6这才是Qt5.12真正发光的地方。你不是在开发板上装Qt而是在x86主机上装一套“交叉编译工具链”用它把代码编译成ARM指令再拷到板子上跑。这时候你根本不需要装Qt Creator因为调试靠gdbserverQt Creator远程调试你需要的是Sources源码包官网下载页最底下那个qt-everywhere-src-5.12.12.tar.xz以及对应开发板的交叉编译器比如Orange Pi CM5要用aarch64-linux-gnu-gcc。我实测过CM5上跑Qt5.12的最小镜像可以压到180MB去掉调试符号后一个带串口通信和曲线绘图的HMI程序二进制文件才2.3MB。与C生态深度集成如paho.mqtt.cpp、OpenCV热词里“qt5.12 paho.mqtt.cpp”就是典型。你不是单纯用Qt写界面而是要把MQTT客户端库、OpenCV图像处理库、甚至自定义的硬件驱动SO库和Qt的信号槽机制绑在一起。这时候安装方式就变了——你不能用在线安装器得用源码编译因为要确保所有库都用同一套C标准-stdc11和同一套ABIApplication Binary Interface。比如paho.mqtt.cpp默认用CMake但Qt5.12的qmake项目要调用它就得在.pro文件里加LIBS -L$$PWD/3rdparty/paho-mqtt/lib -lpaho-mqttpp3而这个lib目录必须是用gcc 7.3编译出来的和Qt5.12.12的MinGW73匹配否则运行时undefined reference to vtable for mqtt::async_client。提示如果你只是想快速验证一个想法比如“试试信号槽传结构体”完全不用装完整版。Qt5.12提供便携版Portable Package解压即用里面只有bin/qmake.exe、bin/moc.exe和lib/下的核心DLL连Qt Creator都不带。我常用它在客户现场临时搭个测试环境5分钟搞定。2.2 环境检查别让系统“假装支持”Qt5.12对系统的要求官网写得轻描淡写但实际踩坑全是这里。我整理了一份硬性检查清单少一项都可能让你卡在“configure失败”Windows必须是Win10 1809以上2018年10月更新Win7 SP1已彻底不支持。不是因为Qt5.12写了新API而是它依赖的UCRTUniversal C Runtime版本太新Win7自带的ucrtbase.dll是10.0.10240Qt5.12.12要10.0.17763。另外Visual Studio版本必须严格匹配——装了VS2019就只能选msvc2019_64组件选msvc2017_64会提示“找不到cl.exe”。实测下来VS2019 Community版免费 Windows SDK 10.0.19041是最稳组合。macOS必须是macOS 10.14Mojave或更高。Qt5.12.12在10.13 High Sierra上编译会报error: unknown type name NSRect因为Apple在10.14里重构了AppKit头文件。而且Xcode命令行工具Command Line Tools必须和Xcode主程序版本一致比如Xcode 12.4就得用xcode-select --install重装对应CLT否则qmake生成的Makefile里-mmacosx-version-min10.14参数会失效。Ubuntu/Debian官方说支持16.04但实测18.04Bionic才是甜点。原因在于Qt5.12依赖libxcb-xinerama0而16.04的apt源里这个包是旧版会导致QApplication构造时崩溃。解决方法不是升级系统而是手动装sudo apt install libxcb-xinerama0 libxcb-xinput0 libxcb-xkb1 libxkbcommon-x11-0。另外g版本必须≥7.3Ubuntu 18.04默认是7.5没问题但如果你用的是WSL1得先sudo apt update sudo apt install build-essential否则连最基本的make都没有。注意VMware虚拟机安装教程里常被忽略的一点——显卡驱动。Qt5.12的QWidget渲染默认走OpenGLVMware Tools自带的SVGA驱动不支持OpenGL 3.3会导致窗口一片黑。解决方案是在VMware设置里关掉3D加速然后在Qt程序启动前加环境变量export QT_QPA_PLATFORMoffscreen或者改用xcb平台插件export QT_QPA_PLATFORMxcb。2.3 依赖预装那些安装器不会告诉你的“隐形门槛”Qt在线安装器Installer Framework很聪明但它不会帮你装系统级依赖。这些依赖不装安装过程可能成功但第一个Hello World就跑不起来。按系统列清楚Windows除了VS你还需要Python 3.7~3.9Qt Creator的Clang Code Model需要、Perl源码编译时configure脚本要用、Ruby可选用于某些文档生成。最坑的是jom——这是Qt官方推荐的并行构建工具比nmake快3倍但安装器默认不装。你得单独去Qt官网下载jom_1_1_3.zip解压到C:\Qt\Tools\Jom再把路径加到系统PATH。否则qmake生成的Makefile用nmake编译100个源文件要编译12分钟用jom只要3分20秒。macOSHomebrew是刚需。brew install python3 cmake ninja其中ninja替代make编译速度提升明显。特别注意libiconv——macOS自带的版本太老Qt5.12 configure会报iconv_open not found。解决方法brew install libiconv然后在configure时加参数-iconv -I/usr/local/opt/libiconv/include -L/usr/local/opt/libiconv/lib。Ubuntusudo apt install build-essential libgl1-mesa-dev libxcb-xinerama0-dev libxcb-xinput0-dev libxcb-xkb1-dev libxkbcommon-x11-0-dev libfontconfig1-dev libfreetype6-dev libicu-dev libsqlite3-dev libssl-dev。这一长串里libxcb-xinerama0-dev是关键它提供多显示器支持没有它QDesktopWidget::availableGeometry()返回的永远是主屏尺寸副屏区域算不准。3. 四种安装方式实操详解从“点下一步”到“源码编译”每一步都告诉你为什么3.1 方式一在线安装器Windows/macOS/Linux通用——适合新手但陷阱最多这是官网首页最醒目的下载按钮图标是个蓝色云朵。它方便但“方便”背后全是妥协。我以Windows为例走一遍全流程并标出所有坑点下载安装器去https://download.qt.io/official_releases/qt/5.12/5.12.12/找到qt-unified-windows-x64-4.5.2-online.exe版本号可能变认准online字样。别下offline那是离线包3GB起步国内下载经常断。运行安装器登录Qt账号没账号现在注册。注意邮箱必须是真实有效的因为激活码发到邮箱。很多人卡在这步用QQ邮箱收不到激活邮件换成Gmail或Outlook。选择安装路径强烈建议不要装在C:\Qt原因有三一是Windows Defender会误报Qt Creator的qmake.exe为病毒因为它打包了大量资源二是路径含空格如C:\Program Files\Qt会导致qmake解析路径出错三是权限问题Win10对Program Files写保护。我的习惯是D:\Qt512全英文、无空格、非系统盘。组件选择——这是最易错的环节勾选Qt Qt 5.12.12 MSVC 2019 64-bit如果你装了VS2019勾选Developer and Designer Tools Qt Creator 4.15.2别选4.16和Qt5.12.12有兼容问题勾选Additional Libraries Qt Charts如果要做曲线图否则不勾绝对不要勾Qt WebEngine、Qt 3D、Qt Virtual Keyboard——它们会拖慢安装速度且占用大量空间必须勾Tools MinGW 7.3.0 64-bit即使你不用MinGWQt Creator的语法检查器需要它开始安装此时安装器会联网下载组件。国内用户大概率遇到“下载失败Connection timed out”。解决方法在安装器左下角点Settings HTTP Proxy填上你公司的代理如有或者更简单——关掉杀毒软件和防火墙它们常拦截Qt安装器的HTTPS连接。安装完成后的必做配置打开Qt Creator →Tools Options Build Run Kits检查Desktop Qt 5.12.12 MSVC2019 64bit是否自动识别。如果没有手动点AddCompiler选Microsoft Visual C Compiler 16.0 (amd64)Debugger选Auto-detected CDB at ...Qt version选Qt 5.12.12。关键一步Tools Options Environment System在Environment variables里加一行QT_QPA_PLATFORMwindowsWin或QT_QPA_PLATFORMcocoaMac或QT_QPA_PLATFORMxcbLinux。这能避免某些显卡驱动下窗口闪烁。实操心得我试过12次在线安装有3次在“正在下载Qt 5.12.12组件”卡死。后来发现规律——如果安装器进程qt-installer-framework的CPU占用率长期低于5%基本就是网络卡了。这时别等直接关掉重来它会续传比从头下快得多。3.2 方式二离线安装包Windows/macOS专用——适合内网或网络差的环境离线包是把所有组件打包成一个EXE不联网。官网提供qt-opensource-windows-x86-5.12.12.exe约3.2GB。优点是快缺点是体积大、更新难。下载同样在5.12.12目录下找qt-opensource-windows-x86-5.12.12.exe注意是x86不是x64这是Qt官方命名习惯实际支持64位。安装双击运行路径选D:\Qt512组件选择和在线安装器一样但这里可以取消勾选Qt Creator因为离线包里Creator是独立的。关键区别离线包安装后Qt Creator不会自动关联Qt版本。你得手动在Creator里Add Qt Version路径指向D:\Qt512\5.12.12\msvc2019_64\bin\qmake.exe。避坑离线包里的MinGW组件是mingw73_64但它的gdb调试器D:\Qt512\Tools\mingw73_64\bin\gdb.exe在Win10 20H2以后会报Error: Failed to load library libwinpthread-1.dll。解决方法从MinGW官网下载x86_64-7.3.0-release-posix-seh-rt_v5-rev0.7z解压后把mingw64\bin\libwinpthread-1.dll复制到D:\Qt512\Tools\mingw73_64\bin\覆盖原文件。3.3 方式三源码编译Linux/macOS/Windows WSL——掌控一切但耗时最长这是嵌入式开发者的标配。源码包qt-everywhere-src-5.12.12.tar.xz约500MB解压后自己configure、make、make install。好处是你可以关掉不用的模块减小体积还能加编译参数优化性能。以Ubuntu 18.04为例# 1. 解压 tar -xf qt-everywhere-src-5.12.12.tar.xz cd qt-everywhere-src-5.12.12 # 2. 创建构建目录重要不能在源码目录里直接configure mkdir build cd build # 3. 运行configure这才是核心 ../configure \ -prefix /opt/qt512 \ -release \ -opensource \ -confirm-license \ -no-opengl \ -no-eglfs \ -no-glib \ -no-pulseaudio \ -no-alsa \ -skip webengine \ -skip qt3d \ -skip qtwebview \ -nomake examples \ -nomake tests \ -platform linux-g-64 \ -v参数解释-prefix /opt/qt512指定安装路径/opt是Linux放第三方软件的标准位置-no-opengl关掉OpenGL用纯软件渲染避免显卡驱动问题-skip webengine跳过WebEngine省3GB空间和2小时编译时间-nomake examples不编译示例节省40分钟-v显示详细日志出错时好排查提示configure过程要5-10分钟它会检测系统里所有依赖。如果报ERROR: The OpenGL functionality tests failed!不是你没装OpenGL而是libgl1-mesa-dev没装sudo apt install libgl1-mesa-dev即可。编译与安装# 用4核并行编译根据CPU核心数调整-j4 make -j4 sudo make install编译时间i7-8700K约28分钟Ryzen 5 3600约22分钟。编译完/opt/qt512/bin/qmake就能用了。3.4 方式四Docker容器化Linux/macOS——隔离环境一键复现如果你做CI/CD或团队协作Docker是王道。我维护了一个精简版Qt5.12镜像FROM ubuntu:18.04 RUN apt-get update apt-get install -y \ build-essential \ libgl1-mesa-dev \ libxcb-xinerama0-dev \ libxcb-xinput0-dev \ libxcb-xkb1-dev \ libxkbcommon-x11-0-dev \ libfontconfig1-dev \ libfreetype6-dev \ libicu-dev \ libsqlite3-dev \ libssl-dev \ rm -rf /var/lib/apt/lists/* # 复制预编译好的Qt5.12从宿主机挂载 COPY qt512 /opt/qt512 ENV PATH/opt/qt512/bin:$PATH ENV LD_LIBRARY_PATH/opt/qt512/lib:$LD_LIBRARY_PATH构建命令docker build -t qt512-dev .运行docker run -it --rm -v $(pwd):/workspace qt512-dev bash进容器后cd /workspace /opt/qt512/bin/qmake make全程隔离不污染宿主机。4. 安装后必做的五项验证与调试让Qt5.12真正“活”起来装完不等于能用。我总结了一套5分钟验证法每一步都对应一个高频故障点4.1 验证一qmake能否识别Qt版本打开终端Win用Qt Creator自带的TerminalMac/Linux用系统终端执行qmake -v正确输出应包含QMake version 3.1 Using Qt version 5.12.12 in /opt/qt512/lib如果报command not found说明PATH没设对。Windows检查系统环境变量Linux/Mac检查~/.bashrc里是否有export PATH/opt/qt512/bin:$PATH。4.2 验证二创建最小QWidget程序看窗口能否弹出新建文件夹helloqt创建main.cpp#include QApplication #include QLabel int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label(Hello Qt5.12!); label.resize(300, 100); label.show(); return app.exec(); }然后执行qmake -project # 生成helloqt.pro qmake # 生成Makefile make # 编译 ./helloqt # 运行如果窗口弹出说明基础环境OK。如果报错cannot find -lGL是OpenGL链接库缺失sudo apt install libgl1-mesa-devUbuntu或brew install mesa-gluMac。4.3 验证三Qt Creator能否正常调试在Qt Creator里新建Qt Widgets Application保持默认选项。编译运行断点打在main()第一行按F5。如果停住说明调试器工作正常。如果报Unable to create a debugging engine检查Options Build Run Kits里Debugger是否选对Windows下必须是CDBWindows SDK自带不是GDB。4.4 验证四信号槽传递结构体是否生效直击热词痛点创建teststruct.h#ifndef TESTSTRUCT_H #define TESTSTRUCT_H #include QString struct MyData { int id; QString name; double value; }; Q_DECLARE_METATYPE(MyData) // 必须声明否则connect报错 #endif // TESTSTRUCT_H在main.cpp里加#include teststruct.h #include QDebug class Sender : public QObject { Q_OBJECT public: void send() { MyData data {1, test, 3.14}; emit dataReady(data); } signals: void dataReady(const MyData data); }; class Receiver : public QObject { Q_OBJECT public slots: void onReceive(const MyData data) { qDebug() Received: data.id data.name data.value; } }; // 在main函数里 qRegisterMetaTypeMyData(MyData); // 必须注册 Sender sender; Receiver receiver; QObject::connect(sender, Sender::dataReady, receiver, Receiver::onReceive); sender.send(); // 输出Received: 1 test 3.14如果编译报错MyData is not a class or namespace name是Q_DECLARE_METATYPE没加如果运行不输出是qRegisterMetaType漏了。这是Qt5.12里结构体传参的黄金组合缺一不可。4.5 验证五交叉编译环境是否就绪针对Orange Pi等假设你已装好aarch64-linux-gnu-gcc测试命令aarch64-linux-gnu-gcc --version # 应输出gcc (Ubuntu/Linaro 9.3.0-17ubuntu1~18.04.2) 9.3.0然后用Qt5.12源码编译交叉版本../configure \ -xplatform linux-aarch64-gnu-g \ -prefix /opt/qt512-arm \ -no-opengl \ -no-eglfs \ -skip webengine \ -nomake examples \ -nomake tests \ -v make -j4 sudo make install编译完/opt/qt512-arm/bin/qmake -query应显示QT_HOST_PREFIX:/opt/qt512宿主机路径和QT_TARGET_PREFIX:/opt/qt512-arm目标机路径说明交叉编译链打通。5. 常见问题与排查技巧实录那些搜索“qt5无法拖拽文件”时没人告诉你的真相我把过去三年帮客户解决的Qt5.12问题按发生频率排序给出可立即执行的解决方案。这不是理论是我在客户现场敲键盘时记下的笔记。5.1 问题速查表症状、原因、一行命令解决症状根本原因一行解决命令qmake: command not foundPATH未包含Qt bin目录export PATH/opt/qt512/bin:$PATHLinux/Mac或在系统环境变量里加D:\Qt512\5.12.12\msvc2019_64\binWinQApplication: invalid style override passed, ignoring itQt Creator里Options Environment Interface的Style设成了Fusion但系统没装相应插件删除~/.config/QtProject/qtcreator/qtcreator.conf里General\style这一行重启Creatorerror: ‘QString’ was not declared in this scope.pro文件里没加QT core或#include QString写成了#include string在.pro文件首行加QT core头文件用#include QStringundefined reference to vtable for xxx类声明了虚函数如virtual ~MyClass(){}但没实现或moc没运行运行/opt/qt512/bin/moc myclass.h -o moc_myclass.cpp再编译QPainter::begin: Paint device returned engine 0, type: 2Linux下没装libxcb-xinerama0导致QPainter初始化失败sudo apt install libxcb-xinerama05.2 “qt5无法拖拽文件”深度解析这个热词背后其实是两个完全不同的问题90%的人搜错了方向问题AQWidget里QDrag不起作用代码里写了QDrag drag(this); drag.setMimeData(data); drag.exec();但鼠标变成禁止符号拖不动。原因drag.setPixmap()没设或者drag.setHotSpot()坐标超出了控件范围。Qt5.12要求拖拽图标必须是有效QPixmap且hotspot必须在图标内。解决QPixmap pixmap(64, 64); pixmap.fill(Qt::transparent); QPainter painter(pixmap); painter.drawText(0, 0, 64, 64, Qt::AlignCenter, FILE); drag.setPixmap(pixmap); drag.setHotSpot(QPoint(32, 32)); // hotspot必须在0-64范围内问题BQFileSystemModel拖拽到QListView没反应这是Qt5.12的已知bugQTBUG-72123在Wayland会话下QAbstractItemView::startDrag()不触发。解决方案不是换系统而是强制切回X11// 在main()开头加 qputenv(QT_QPA_PLATFORM, xcb); // 或者在终端运行程序前加 export QT_QPA_PLATFORMxcb ./myapp5.3 “qt5 qstring file not find”终极排查这个错误99%不是Qt的问题而是qmake的路径解析逻辑。典型场景你的项目结构是project/ ├── src/ │ ├── main.cpp │ └── utils/ │ └── filehelper.h └── include/ └── common.h你在main.cpp里写#include utils/filehelper.h没问题但写#include ../include/common.h就报错。因为qmake默认只把$$PWD/src加到INCLUDEPATH$$PWD/include不在其中。解决方法有三改.pro文件推荐INCLUDEPATH $$PWD/include DEPENDPATH $$PWD/include用相对路径写include#include include/common.h然后在.pro里加INCLUDEPATH $$PWD。用qmake函数INCLUDEPATH $$system(pwd)/include但跨平台不安全。5.4 Orange Pi CM5交叉编译踩坑实录给CM5编译Qt5.12我花了整整两天。记录关键步骤工具链准备从Rockchip官网下载rk3566_linux_release_v1.22.tar.gz解压后buildroot/output/rockchip_rk3566_release/host/bin/里有aarch64-rockchip-linux-gnu-gcc。把它加到PATHexport PATH$PATH:/path/to/host/bin。configure参数必须加-device linux-rockchip-rk3566-g但Qt5.12源码里没有这个设备配置。解决复制qtbase/mkspecs/devices/linux-generic-g为linux-rockchip-rk3566-g修改qmake.conf里的QMAKE_CC为aarch64-rockchip-linux-gnu-gcc。最致命的坑CM5的Linux内核是5.10但Qt5.12默认用-D_LARGEFILE64_SOURCE导致stat64函数冲突。解决在configure后编辑qtbase/src/corelib/global/qglobal.h注释掉#define _LARGEFILE64_SOURCE这一行。最终验证编译出的libQt5Core.so用file命令检查file libQt5Core.so应输出ELF 64-bit LSB shared object, ARM aarch64而不是x86-64。6. 我的个人经验Qt5.12不是终点而是你理解Qt生态的起点在我用Qt5.12做的最后一个项目里客户要求把一个运行在Windows上的老旧VB6数据录入系统迁移到Linux ARM平台还要支持触摸屏手写签名。我们没选Qt6因为Qt6的QML渲染在Rockchip GPU上掉帧严重也没选Qt5.15因为它的LTS支持只到2023年而客户产线生命周期是8年。Qt5.12.12成了唯一解——它足够新支持C11所有特性让我们能把手写算法用std::thread重写又足够老所有ARM Mali GPU驱动都对它做了深度适配。所以当你装完Qt5.12别急着写代码。花10分钟打开D:\Qt512\5.12.12\msvc2019_64\examples或/opt/qt512/examples找到widgets\itemviews\addressbook这个例子。不要运行它而是打开addressbook.pro看它怎么组织.h/.cpp文件怎么用QT widgets sql声明依赖怎么在main.cpp里new AddressBook。再打开addressbook.ui用Qt Designer拖一个QPushButton保存看.ui文件里XML怎么描述这个按钮的位置和文字。这才是Qt5.12教会你的第一课它不是一个黑盒子而是一套清晰的约定——qmake管构建moc管元对象uic管界面你只需要遵守这些约定剩下的交给它。最后分享一个小技巧Qt5.12的文档离线版Qt5.12.12-Documentation比在线版快10倍。下载后在Qt Creator里Help About Plugins启用Qt Help插件然后Help Add Documentation指向qch文件。这样按F1查QFile0.2秒出结果不用等网页加载。这微小的延迟节省一年下来能多写2000行有效代码。
返回列表