简介《C Qt5 范例开发大全》中文版面向希望系统掌握 Qt5 框架的 C 开发者从入门到进阶均可使用。内容以实例驱动覆盖开发环境搭建与 Hello World 起步、窗体基类与窗口大小、位置、背景色、标题栏图标、无边框移动、多窗体调用等窗口管理技巧以及 QPushButton、QLabel、QLineEdit、QTextEdit、QComboBox、QSpinBox、QTimeEdit、QDateEdit、QRadioButton、QCheckBox、QListView、QTreeView、QTableView 等常用控件和 QHBoxLayout、QGridLayout 布局管理并延伸至 QPainter 图形绘制与 QSslSocket、QCryptographicHash 加解密应用。资源包为 1 个 PDF 文件大小 2.83MB单文件即含完整章节与示例说明便于离线阅读和按目录检索。已有 257 人学习适合需要对照实例快速上手 Qt5 界面开发、补齐控件用法与窗口管理细节的读者参考。1. 从一台干净机器开始Qt 5.1.1 MinGW 4.8 环境到底怎么落地上周帮一个做桌面工具的朋友收拾一台旧笔记本系统是 Windows 7 64 位干干净净连个编译器都没有。他手里有一份《C Qt5 范例开发大全》的配套代码想照着书里的例子把 Qt 环境跑起来结果卡在第一步——下载哪个包、装完为什么命令行里敲qmake提示找不到、编译出来的 exe 双击一闪就退。这三个问题几乎是每个照着 Qt5 范例开发入门的人都会撞上的。这篇笔记就按我实际装机的顺序把 Qt 5.1.1 for Windows 32-bit (MinGW 4.8, OpenGL) 这套离线包从下载、安装、配环境变量到跑通第一个 Hello World 的完整过程记一遍顺带把后面窗体、控件、文件操作、打包部署这些章节跑起来之前必须准备好的东西一次说清。新手照着走能通熟手可以重点看版本取舍和那几个容易翻车的参数。2. 装前把版本和依赖定死Qt 5.1.1 离线包怎么选2.1 为什么锁定 5.1.1 这个离线包而不是在线安装器书里的范例代码是按 Qt 5.1.1 写的配套光盘里的工程文件.pro用的也是这个版本的模块划分。Qt 的版本差异在 5.x 内部看着不大但真跑起来QTextEdit、QTableView这些控件的信号槽签名、QRegExp到QRegularExpression的迁移、以及QMediaPlayer在 5.2 之后对后端插件的依赖变化都会让书上的代码在新版本上编译报错或者运行行为不一致。所以我的建议很直接先按书上的版本把例子跑通再考虑升级别一上来就装最新的 Qt 6那样你会花大量时间在改代码而不是学框架上。离线包的文件名是qt-windows-opensource-5.1.1-mingw48_opengl-x86-offline.exe大约 666 MB。这个包自带 MinGW 4.8 编译器和 Qt Creator装完不需要再单独配编译器对新手最省事。在线安装器虽然能选更多组件但 5.1.1 这个老版本在在线源里未必还挂着而且在线装容易因为网络中断留下半残的目录后面排查起来很烦。2.2 装之前先确认的三件事第一确认系统位数。这个包是 32 位的在 64 位 Windows 上能正常跑但如果你后面要链接 64 位的第三方库比如某些数据库驱动就会对不上。书里的例子全是 32 位场景所以统一用 32 位包最稳。第二确认磁盘路径没有中文和空格。Qt 的 qmake 在生成 Makefile 时对路径里的空格处理得不算好装到C:\Program Files\下面后面编译某些带资源文件的工程容易报No such file or directory。我一般直接装到D:\Qt\Qt5.1.1路径短、无空格后面配环境变量也清爽。第三确认安装前关掉杀毒软件的实时防护。MinGW 的mingw32-make.exe和g.exe在解压阶段会被某些安全软件误判拦截导致装完发现bin目录里少了几个关键 exe编译时提示找不到 make。这不是玄学我至少遇到过两次装完先看一眼D:\Qt\Qt5.1.1\5.1.1\mingw48_32\bin下面有没有qmake.exe、mingw32-make.exe、g.exe这三个文件缺了就重装。2.3 安装过程中的选项取舍双击离线包后欢迎界面直接下一步。到组件选择那一步默认勾选的Qt 5.1.1和Tools都保留Tools里面包含 Qt Creator 和 MinGW。有一个选项是Source Components也就是 Qt 源码书里的例子用不到不勾能省几百 MB。安装路径那一步手动改成D:\Qt\Qt5.1.1注意这里填的是安装根目录安装器会自动在下面建5.1.1\mingw48_32这样的子目录。装完最后一步会问要不要现在启动 Qt Creator先别急着启动把环境变量配完再开否则第一次打开 Creator 时它探测编译器的路径可能不准还得手动改回来。3. 配环境变量与验证编译器三个路径别写错3.1 PATH 里到底该加哪一条书里写的是在系统变量Path里追加;D:\Qt\Qt5.1.1\5.1.1\mingw48_32\bin。这一步的目的是让命令行里能直接敲qmake和mingw32-make同时让编译出来的 exe 在双击运行时能找到 Qt 的 DLL。注意前面的分号是 Windows 下多个路径的分隔符如果你是在已有 Path 值的末尾追加分号不能少如果 Path 原来为空分号反而会导致解析异常这种情况直接写路径本身。配完之后必须新开一个命令行窗口验证已经开着的 cmd 不会重新读取环境变量。验证命令qmake -v mingw32-make -v g --versionqmake -v正常会输出QMake version 3.0和Using Qt version 5.1.1 in D:/Qt/Qt5.1.1/5.1.1/mingw48_32/lib。如果提示「不是内部或外部命令」说明 Path 没生效或者路径写错了回到环境变量窗口检查有没有多敲空格、有没有把bin写成bind。mingw32-make -v输出的是 GNU Make 的版本信息g --version输出g (GCC) 4.8.x三个都通才算编译器链路打通。3.2 Qt Creator 里手动确认编译器套件环境变量配好之后启动 Qt Creator进工具→选项→构建和运行看编译器标签页里有没有自动探测到 MinGW。正常情况下它会列出MinGW Generator (x86 32bit)之类的条目路径指向D:\Qt\Qt5.1.1\Tools\mingw48_32\bin\g.exe。注意这里有个容易混的点Qt 自带的 MinGW 在Tools目录下而 Qt 库在5.1.1\mingw48_32目录下两个路径不一样配环境变量加的是后者因为要 qmake 和 DLL编译器探测用的是前者。如果构建套件(Kit)那一页显示黄色感叹号点开看是编译器没选还是 Qt 版本没选手动指到对应路径即可。3.3 用命令行跑一遍 qmake 验证整条链路在 Qt Creator 里点绿色箭头能跑不代表命令行链路是通的。我习惯在装完后单独用命令行验证一次因为后面打包部署、写批处理脚本都依赖命令行。随便建个目录放一个最小的main.cpp#include QApplication #include QLabel int main(int argc, char *argv[]) { QApplication a(argc, argv); QLabel label(Hello Qt5); label.show(); return a.exec(); }然后在这个目录下依次执行qmake -project qmake mingw32-make第一条根据当前目录的源文件生成.pro第二条生成 Makefile第三条编译。编译完目录下会出现release或debug文件夹里面的 exe 双击应该能弹出窗口。这一步能过说明 qmake、make、g、Qt 库四者全部对齐后面书里的例子才有跑通的基础。提示qmake -project生成的.pro里默认带QT core gui如果你后面用到网络、多媒体、SQL 模块要手动加QT network multimedia sql否则编译时报找不到头文件。4. 跑通第一个范例工程从 Hello World 到窗体基类选择4.1 新建工程的基类怎么选书里第 1.3 节建 Hello World 时到基类选择那一步会看到QMainWindow、QWidget、QDialog三个选项。这三个的区别书里第 2.1 节讲得比较细我这里按实际使用场景给个取舍QMainWindow自带菜单栏、工具栏、状态栏适合做主窗口书里后面第 3 章那些控件范例大多建在它上面QWidget是最干净的空白窗口适合做无边框窗体、自定义绘制的例子第 2 章移动无边框窗体、第 6 章图形图像QDialog是对话框基类适合第 4 章的登录窗口、文件浏览对话框这类短期交互。新手第一个例子选QMainWindow就行和书里保持一致后面换基类只是改一行继承的事。4.2 工程目录结构里哪些文件是自动生成的建完工程后目录里会有一堆文件容易看晕。main.cpp是程序入口mainwindow.cpp/.h/.ui是主窗口的实现、声明和界面文件.pro是工程配置debug和release是编译输出目录第一次编译前不存在。书里第 1.3 节末尾专门讲了目录结构核心就一句你只需要关心.pro、.cpp、.h、.ui这几类其余都是编译产物可以随时删掉重新生成。.ui文件是 Qt Designer 的界面描述双击会用设计器打开但书里的例子大多是纯代码写界面.ui里基本是空的不用管它。4.3 编译报错的第一个排查点第一次编译最常见的报错是fatal error: QApplication: No such file or directory。这通常不是 Qt 没装好而是.pro里少了QT widgets。Qt 5 把 widgets 从 core/gui 里拆出来了qmake -project自动生成的.pro有时只带core gui手动补上QT widgets再重新qmake就好。第二个常见报错是中文注释导致的编码问题MinGW 4.8 默认按 GBK 读源文件如果源文件存成 UTF-8 且带 BOM编译可能报stray \357 in program。解决办法是在.pro里加一行QMAKE_CXXFLAGS -finput-charsetUTF-8或者干脆把源文件存成 GBK。我一般选前者因为后面跨平台迁移时 UTF-8 更省心。5. 避坑与排查装 Qt5 老版本最容易翻车的五件事5.1 双击 exe 一闪就退命令行里却能跑现象在 Qt Creator 里点运行正常到release目录双击 exe窗口闪一下就没了。原因exe 依赖 Qt 的 DLLQt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll等双击运行时系统按 PATH 找 DLL如果 PATH 里没有 Qt 的 bin 目录或者你用的是 64 位系统但 PATH 里混进了别的 Qt 版本就会加载失败。解决确认D:\Qt\Qt5.1.1\5.1.1\mingw48_32\bin在 PATH 里且排在前面更稳妥的做法是用windeployqt把依赖 DLL 拷到 exe 同目录命令是windeployqt your.exe这个工具在 bin 目录下会自动把需要的 Qt DLL 和插件目录platforms\qwindows.dll一起拷过去。5.2 编译时报找不到mingw32-make现象Qt Creator 里构建时提示Cannot find make或者mingw32-make: command not found。原因构建套件里编译器路径没配对或者安装时杀毒软件把mingw32-make.exe拦了。解决先到D:\Qt\Qt5.1.1\Tools\mingw48_32\bin看文件在不在不在就重装在的话进 Qt Creator 的构建和运行→编译器手动添加 MinGW 编译器路径指到g.exe再回构建套件把编译器选上。5.3 资源文件里的图标加载不出来现象书里第 2.4 节改标题栏图标代码写了setWindowIcon(QIcon(:/new/prefix1/ico))运行后图标是空的。原因.qrc资源文件没被编译进工程或者前缀/别名写错。解决检查.pro里有没有RESOURCES image.qrc这一行没有就手动加再检查.qrc里前缀是不是/new/prefix1、别名是不是ico路径大小写敏感。改完.qrc后必须重新执行qmake再构建只点构建不会重新编译资源。5.4 数据库范例报QODBC driver not loaded现象跑第 10 章 QODBC 连接 Access 的例子时QSqlDatabase::drivers()返回的列表里没有QODBC。原因Qt 5.1.1 的离线包默认只带 SQLite 驱动ODBC 驱动需要单独编译或者装对应插件。解决如果只是学 SQLite 部分书里 1.5、1.6 节直接用QSQLITE驱动即可不用折腾 ODBC确实要连 Access得用qmake单独编译qtbase\src\plugins\sqldrivers\odbc下的工程把生成的 DLL 放到plugins\sqldrivers目录。这一步对新手偏重建议先跳过把 SQLite 的例子跑通再说。5.5 打包后的程序在别人机器上打不开现象用第 14 章讲的 Inno Setup 或 FilePacker 打包后在自己机器上能装能跑换台机器就提示缺少 DLL。原因打包时只打了 exe没把 Qt 的 DLL 和platforms插件目录带进去。解决打包前先跑一遍windeployqt确认 exe 同目录下有Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll和platforms\qwindows.dll再把整个目录交给打包工具。platforms目录漏了是最常见的表现是程序启动时报This application failed to start because no Qt platform plugin could be initialized。6. 装完怎么验证整套环境真的能跑三个层次的检查环境装没装好不能只看 Qt Creator 能不能打开。我一般分三层验证从底往上哪层断了就停在哪层修。第一层是命令行工具链。新开 cmd依次敲qmake -v、mingw32-make -v、g --version三个都有版本输出且 qmake 指向 5.1.1这层就算过。这一层不过后面所有事都白搭重点查 PATH 和安装目录完整性。第二层是命令行编译一个最小工程。用第 3.3 节那个main.cpp走qmake -project→qmake→mingw32-make三步编译出 exe 并双击能弹窗。这一层验证的是 qmake 生成 Makefile 的能力、make 调用编译器的能力、以及链接阶段能不能找到 Qt 库。如果编译过了但双击闪退回到 5.1 节用windeployqt处理。第三层是跑书里的真实范例。挑三个有代表性的第 2 章的「控制窗体大小」验证 widgets 模块和基本窗口 API、第 5 章的「INI 文件写入操作」验证QSettings和文件 IO、第 13 章的「MD5 加密数据」验证QCryptographicHash这个不需要额外模块。三个都能编译运行且行为符合书里描述说明这套环境足以支撑整本书大部分例子。下面这张表是我验证时记录的对照可以照着核对验证项命令/操作通过标准qmake 版本qmake -v输出 Qt version 5.1.1编译器g --versionGCC 4.8.x最小工程编译qmake mingw32-make生成 exe 且可运行DLL 依赖windeployqt xxx.exe同目录出现 Qt5*.dll 和 platforms范例工程打开 .pro 构建运行界面与书里描述一致有一点要提醒验证范例工程时如果书里配套代码的.pro是在别的路径下生成的打开后先执行一次qmake再构建让 Makefile 按你本机的路径重新生成否则会出现一堆莫名其妙的路径找不到错误。这个习惯我保持了多年——任何从别人机器上拿来的 Qt 工程第一步永远是清理后重新 qmake比直接点构建省心得多。从那以后我每次装 Qt 环境不管多急都会把这三层验证走一遍再开始写业务代码因为环境问题越早暴露越好修等写到一半再发现 DLL 缺失或者模块没编排查成本翻好几倍。希望这套流程能帮到你少走几个我当年踩过的坑。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
Samba多用户权限设置实战:三层权限模型与避坑指南 简介:这份资源是面向Linux系统管理员与运维人员的Samba多用户权限配置实战案例文档,聚焦于解决Linux与Windows跨平台文件共享中不同角色用户按需访问特定目录的权限控制问题,适合已具备基础Linux操作能力、希望深入掌握Samba共享安全配置的读… · 2026/11/3 10:54:24
网络数据挖掘实战:内容、结构与使用挖掘的Python实现 简介:《Python网络数据挖掘实战》面向具备一定Python基础、希望系统掌握网络数据提取与分析方法的开发者与数据方向学习者,围绕网络内容挖掘、结构挖掘与使用挖掘三大分类展开,并延伸至个性化客户服务、网络搜索、网络跟踪与过程挖掘等应用场… · 2026/11/3 10:54:24
Python网络数据挖掘实战:内容、结构与使用挖掘全解析 简介:《Python网络数据挖掘实战》面向具备一定Python基础、希望系统掌握网络数据提取与分析方法的开发者与数据方向学习者,内容覆盖从网络挖掘概念到Python落地的完整链路。全书先梳理网络内容挖掘、结构挖掘与使用挖掘的分类,并延伸至个性化… · 2026/11/3 10:54:24
Redis键过期机制原理与实战应用详解 1. Redis键过期机制的核心原理Redis作为内存数据库的标杆产品,其键过期机制的设计直接影响着内存使用效率和应用稳定性。当我们在Redis中设置过期时间时,实际上是在操作一个独立的过期字典(expires字典),这个字典与主字… · 2026/11/3 11:43:23
专业内容创作指南与处理不完整信息建议 1. 理解输入内容的缺失根据您提供的输入信息,项目标题为"111111",其他字段均为空。这种情况通常意味着:可能是测试输入或占位符用户可能误操作提交了不完整信息系统传输过程中出现了数据丢失2. 专业内容创作的基本原则作为专业内容… · 2026/11/3 11:43:23
SQL索引优化实战:从原理到性能提升150倍的秘诀 1. 为什么SQL索引如此重要? 我至今还记得第一次遇到生产环境SQL查询超时的场景——一个原本只需要0.1秒的简单查询,在数据量增长到百万级后突然需要15秒才能返回结果。当时紧急排查发现,问题就出在没有正确使用索引上。这个教训让我深刻认识到… · 2026/11/3 11:43:23
Git版本回退原理与实战指南 1. 为什么我们需要版本回退? 在团队协作开发中,代码库就像是一个不断生长的有机体。想象一下这样的场景:你花了三天时间开发一个新功能,提交了十几个commit后突然发现——这个功能方向完全错了!或者更糟,你… · 2026/11/3 11:43:23
UE5 JSON解析:TJsonReader类族与性能优化实践 1. UE5 JSON解析基础与TJsonReader类族概述在Unreal Engine 5的C开发中,处理JSON数据是日常开发中无法回避的任务。引擎内置的JSON解析系统提供了一套高效、类型安全的处理方案,其核心就是TJsonReader类及其派生类。这套解析器采用流式处理模式ÿ… · 2026/11/3 11:43:23
WinForms开发中的死锁问题与解决方案 1. 死锁的本质与四大必要条件 在WinForms应用开发中,当我们在UI线程与后台任务之间频繁切换时,稍不注意就可能陷入死锁的泥潭。死锁就像两个人在狭窄走廊相遇,谁也不肯后退一步,结果谁都过不去。从技术角度看,死锁是指… · 2026/11/3 11:42:22
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46