我也不知道为什么,当初就是想放这么一张图在这里~
[TOC]
锚点 | 详细 |
---|---|
QtExamples | 本项目已收录于 Product |
目录 | |
项目介绍 | |
构建环境 | |
热门作品 | |
楔子 | |
新手过来 | |
分享所想 | |
热爱开源 | |
贡献捐赠 | |
联系作者 | |
正文 | |
1-预备知识 | Windows / MacOS / Linux 系统安装 QtCreator 或 Visual Studio 等,演示单步调试,讲解 Shell、PowerShell |
2-QT生成原理和运行机制 | Make,Makefile,CMake,QMake;namespace Ui { class Widget; } 解析 |
3-常规GUI控件 | Qt 原生控件,高级自绘和组合控件, |
4-网络编程 | QHostInfo,QNetworkInterface,QTcpServer,QTcpSocket,QUdpSocket,QNetworkAccessManager |
5-DTK重绘控件原理解析-自定义QSTYLE | DTK 历史发展,背景知识,感性理解,DTK 源码解析架构,DTK 项目实战 |
6-QT-IDE乱码根因和解决 | Qt 编译乱码根因和解决:古文码、口字码、符号码、问号码、棍拷码 |
7-IDE技巧 | IDE技巧:Qt Creator ,Visual Studio 和 WinDbg 调试 |
8-提交规范和发布QT程序 | Git 约定式提交规范,Doxygen,.gitignore;各系统上打包和发布可执行程序 .exe .dmg .App .deb .AppImage |
9-高级编程 | Lambda, 手搓信号和槽实现原理,高分屏处理,向上游 Qt 反馈 Bug,自行编译 Qt 源码 |
10-项目商业级项目 | 见 项目清单❤️ 和软件、硬件实现;上架微软商店、购买和应用代码签名证书;刷机路由器 OpenWrt |
11-服务器开发之Linux基础编程 | GCC/G++,GDB,程序运行原理,文件描述符,PCB |
12-服务器开发之Linux系统编程 | 进程间通信,管道,内存映射区;信号和守护进程,未决信号,阻塞信号;多线程,互斥锁,原子操作,条件变量 |
13-服务器开发之Linux网络编程 | 基础的网络理论基础知识已会,也写过一些实战项目的代码,可以参考第10章部分 |
14-研发遇到的疑难杂症经验 | 见 研发遇到的疑难杂症经验.md 文件 |
许可协议 | Apache-2.0 license |
-
Qt
的GUI
基础控件用法,网络; -
DTK
重绘控件方式的框架解析; -
QtCreator
使用和一些小技巧; -
Qt
原理/运行机制理解
自己所学记录,亦可以互相交流共享学习,有朋自远方互联网而来,不亦悦乎?
该系列的源码,知识文章等均托管于此仓库;主线目标是讲解 QT5、Linux 基础和系统编程,相关文章
开发系统: MacOS 10.14-15.x
| win 10-11
| UOS/Deepin 20-25
编码软件: Qt 5.9-5.15 & 6.x
| Visual Studio 2015-2022
较火 / 高规格的完整项目 🔥🔥🔥 【属第10章】
-
极简的电脑管家,一键关闭 Windows Defender (Anti-Virus). 【windows-defender-close】[★★]
-
截图三部曲,入门至商业级水准作品: 难 → 易
- SunnyCapturer 跨平台的截图软件,支持离线OCR,图片翻译,贴图,钉图 [★★★★★ 2023-2025] :👉 SunnyCapturer
- FLIPPED 一款简易且漂亮的跨平台截图和贴图的软件 [★★★]
- ShotX 一个轻量级的 跨平台截图 [★]
新手 在深思熟虑后踏入的编程,容易遭遇如下如下几点:
- 语言语法不熟悉🤦♀️
- 相关 IDE 安装、配置不会;不懂如何创建自己所需的工程项目🤦♀️
- 基础控件不认识,不会用🤦♀️
- 难以🔍可阅读、成体系的低级博客,多为高热度Title文章🤦♀️
- ...开始步入正轨👣
- 也不知学编程到是底在学习什么❓👀
- ...修行靠个人👩💻
- 自己想学一遍 GUI 控件
- 帮助真的新手实现0→1的入门,解决👆的1,2,3,4,6问题
- 学习于网络,回馈于网络
- 希望永久被🔍引擎检索到,以博客形式发表📝
Star 增长
虽然不盈利,会累,但因自由和开源软件而写的开心ya, 鸭鸭
若是帮助到了你,或者觉得有用,可以点击该项目的的 ⭐Star 和🍴 Fork 的两个图标,方便抬手之间,表示点个赞,手有余香
当然也可以赠与一杯冰阔落[捐赠/打赏 ← 点击展开二维码]
- If you have something to learn from the project, you can also invite me to share a glass of Fat House Ice and Coke. -
-
Windows 系统
-
MacOS 系统
-
Linux 系统
-
通用命令交互
- IDE 对 Qt 源码函数进行单步调试
原生控件
- 一个默认的
Qt Widget
项目 【空】 - 元对象系统 MOC (Meta-Object System) 的对象 MetaObject 和(含动态)属性 Propert 的用法 【QtMeatObjectEx】
- QString 在2 /8/10/16 进制之间转换 【QtQStringEx】
- QString 常用的功能函数的介绍及用法 【QtQStringFunEx】
- QSlider + QAbstractSlider 滑动条的介绍及用法【QtQSliderEx】
- QSlider + QScrollBar + QProgressBar ( 移动条、滚动条 、进度条)的联动【QtQProgressBarEx】
- QSlider 仪表盘 + QLCD_NUmber 数值显示 的介绍及用法【QtQdialQLCDEx】
- QTime / QDate / QDateTime 时间日期 + QTimer 定时器的的介绍及用法【QtDateTimeEx】
- QComboBox 下拉列表框 + QPlainTextEdit 多行富文本编辑器的介绍及用法 【QtQcomboBoxEx】
- QListWidget 列表控件 + QToolButton 工具按钮的介绍及用法【QtQListWidgetEx】
- QTreeWidget 目录树组件 + QDockWidget 停靠区域组件的介绍及用法【QtQTreeWidgetEx】
- QTableWidget 表格组件的的介绍及用法【QtQTableWidgetEx】
- QFileSystemModel 数据模型获取本机文件系统用法【QtQFileSystemModelEx】
- getOpenFileName 标准对话框和自定义对话框的用法【QtQDialogEx】
- QTableView 表格视图 + QStandardItemModel 标准项模型的用法【QtQStandardItemModelEx】
- 自定义和标准对话框的用法【QtCustomDialogEx】
- MDI(Multi-document Interface) 多文档界面的实现 + QMdiArea 的用法【QtMDIEx】
- 创建 QKeySequenceEdit() 后,显示方块■◆乱码
- Qt 修改
*.svg
文件的颜色【ExChangeSVGColor】
高级自绘和组合控件
-
Qt 使用亚克力的透明磨砂效果的窗口思路和解决方案,三种实现思路,支持全平台 【AcrylicWindow】
-
使用 QListWidget 创建的一个 气泡聊天窗口消息的控件 BubbleMessage,且自适应大小 【BubbleChat】 [★★★★]
- QHostInfo 主机信息查询 + QNetworkInterface 查询 IP 等【QtQHostInfoEx】
- TCP 通信之 QTcpServer + QTcpSocket,服务器和客户端通讯【QtTcpEx】
- UDP 通信之 QUdpSocket + unicast 单播 / broadcast 广播 / multicast 组播【QtUdpEx】
- QNetworkAccessManager + QNetworkReply + QNetworkRequest 协同实现高层网络的操作 HTTP 【QtHttpEx】
- DTK 历史发展
- 背景知识
- QStyle与QPen、QPush、QPalette、QPainter之间的区别
- DTK 基础教程:自定义控件规范 [★]
- QStyle 设置界面的外观和 QCommonStyle 继承关系图讲解和使用 [★★]
- Qt 之 proxy() 代理函数探究
- 感性理解👀
- DTK 源码解析架构🤔
- DTK 项目实战
- 更换 QT 应用程序的界面 UI,实现换肤,展示自带其它 QStyle 样式
- QStyle 自定义重绘 QScrollBar
- QStyle 自定义重绘 QRubberBand 控件
- QStyle 自定义重绘滑动条 QSlider 控件
- QStyle 自定义重绘滑动条 QSlider 控件二
- QStyle 重绘时 sizeFromContents() 未被调用的分析
- QStyle 之 PenStyle 的 CustomDashLine 使用
- Deepin 开发任务栏网速插件 lfxSpeed [★]
- Deepin 任务栏网速插件推荐 NetSpeed (重构 lfxSpeed) [★★]
- Deepin 自定义修改窗口圆角大小 [商业开源项目示例 ★★]
- Deepin 愿望墙:社区插件等需求调研结果 [社区练手参考]
-
此两篇足够
-
极简图表解释 --> 古文码、口字码、符号码、问号码、棍拷码 [★★★★★]
-
极繁根因分析 --> 愿编程不再乱码(含Qt)-根因深究 [★★★★★]
-
-
产出 “极繁根因分析” 一文的途中的曲折认知
- Qt Creator
- Visual Studio
- VS2017 调试 Qt 源码,安装 PDB
- VS2019 调试 Qt5 时 QString 显示为内存地址而非字符串
- VS2022 And QtCreator10调试Qt源码教程 [★★★★★]
- Visual Studio 实际仅增删数行,却显示文件所有行均发生变更
- Visual Studio 生成 .vs 隐藏文件夹,导致 Git 命令错误
- Win10 的 20H2 使用 VS 2019,拖曳窗口会崩溃
- Visual Studio 2019 进行远程调试
- Visual Studio 断点调试之箭头偏移进错函数,捉🐛记
- 微软 SDK 导致的项目编译失败哦~
- 一个微软自带的 Notepad 所导致的问题 【ExCRLF】
- WinDbg 调试
- 约定式提交规范
- 修改 Doxygen 主题,生成 Qt 风格的文档
- QT 项目在 Windows 平台上面发布成可执行程序
- QT 项目在 MacOS 平台上面发布成可执行程序
- QT 项目在 Linux 平台上面发布成可执行程序
- Linux 中用 dh_make 将 Qt + CMake 项目打包为 deb 文件
上架 App Store
更多项目介绍参见 Product
较火 / 高规格的完整项目 🔥🔥🔥
-
极简的电脑管家,一键关闭 Windows Defender (Anti-Virus). 【windows-defender-close】[★★]
-
截图三部曲,入门至商业级水准作品: 难 → 易
- SunnyCapturer 跨平台的截图软件,支持离线OCR,图片翻译,贴图,钉图 [★★★★★ 2023-2025] :👉 SunnyCapturer 官网
- FLIPPED 一款简易且漂亮的跨平台截图和贴图的软件 [★★★]
- ShotX 一个轻量级的 跨平台截图 [★]
新人友好的项目
- 项目实战:仿 QQ 的单聊,属 GUI 界面
- 项目实战:仿 QQ 的群聊,属 GUI 界面
- 项目实战:C 语言写 Socket 的 TCP 聊天,属 CUI 控制台
- 项目实战:C 语言写 Socket 的 UDP 聊天,属 CUI 控制台
- 项目实战:QT5 的 Quick 仿写 QQ 2019 简洁版的登录界面,含 GUI 界面
- QT5/C++项目:QT象棋【初版】 [★★★★★]
- QT5/C++项目:基于QT的跨平台网络对战象棋(一) [★★★★★]
- QT5/C++项目:基于QT的跨平台网络对战象棋(二) [★★★★★]
- QT5/C++项目:基于QT的跨平台网络对战象棋(三) [★★★★★]
硬件
💻: UOS20 (Debian8+) 📎 gcc/g++ 8.3.0 📎 gdb 8.0 或 MacOS 10.14.6 📎 gcc/g++ 9.2.0 📎 gdb 8.3
GCC/G++
- 在MacOS上面通过brew命令安装gcc编译器集 【unix_linux_01_test_gcc】
- gcc和g++的区别,编译.c和.cpp文件的区别 【unix_linux_02_c_cpp】
- gcc工作流程:预处理,编译,汇编,链接 【unix_linux_03_gcc_workflow】
- Linux下使用gcc生成静态库.a和调用(图文并茂,坑已踩完) 【unix_linux_04_make_so_a】
- Linux下使用gcc生成动态库.so和调用(图文并茂,坑已踩完) 【unix_linux_04_make_so_a】
- 在Linux中,编写入门的makefile文件,然后逐渐迭代 【unix_linux_05_makefile】
GDB
- 在MacOS10.14.6安装最新gdb8.3的详细教程,含可能遇到的所有坑(网上最新教程) 【unix_linux_06_gdb】
- gdb调试器的使用,初探全貌 【unix_linux_06_gdb】
程序运行原理,文件描述符,PCB
- Linux中文件操作,软硬链接ln,用户权限chmod、chown,文件查找和检索find、grep,压缩gz,bz2
- Linux中虚拟地址空间、pcb、文件描述符、C库函数工作流程、标准库和系统库函数区别
- Linux中man手册,阻塞和非阻塞,stat,文件操作和遍历,文件描述符复制dup() 【unix_linux_07_sysfun】
进程间通信
- Linux中fork创建兄弟子进程,验证进程之间全局变量不共享,exec函数族 【 unix_linux_08_fork / unix_linux_09_exec 】
- Linux中孤儿进程,僵尸进程,进程回收wait、waitpid函数 【unix_linux_10_orphan_zombie_process】
- 父子进程、兄弟子进程之间通信方式--匿名管道pipe(适用于有血缘关系的进程) 【unix_linux_11_pipe】
- Linux中普通的进程间通信方式--有名管道fifo(适用于无血缘关系的进程) 【unix_linux_12_fifo】
- Linux中进程间的通信方式--内存映射区mmap() 【unix_linux_13_mmap】
信号和守护进程
- Linux中系统信号初识,和函数kill,raise,abort,alarm,setitimer 【unix_linux_14_signal】
- Linux中未决信号集和阻塞信号集的状态关系sigaddset,以及捕捉信号函数 【unix_linux_15_sys_usr_signal】
- Linux中创建守护进程setsid() 【unix_linux_16_daemon】
多线程
- Linux中创建多线程实例pthread_create() 【unix_linux_17_thread】
- Linux中多线程操作函数pthread_exit()、pthread_jion()、pthread_detach()、pthread_cancel() 【unix_linux_17_thread】
- Linux中使用使用互斥量(锁)Mutex来操持多线程同步执行pthread_mutex_lock() 【unix_linux_18_mutex】
- Linux中原子操作,死锁原因以及解决方法,读写锁的属性和函数使用pthread_rwlock_wrlock() 【unix_linux_19_pthread_rwlock_wrlock】
- Linux中多线程使用条件变量阻塞线程,和pthread_cond_wait()函数使用 【unix_linux_20_conditton】
- Linux中多线程使用信号量(信号灯),和sem_wait()函数使用 【unix_linux_21_semaphore】
-
感觉基础的网络理论基础知识已会,写过一些实战项目的代码,可以参考第 10 章部分;后面深入底层网络完成,有空再整理文章。
-
见本仓库的
unix_linux_基础知识_性能优化_操作系统原理_高清图谱.jpg
文件 -
Linux / Unix 学习完整系列(基础 / 编译 / 进程间通信 / 信号 / 守护进程 / 多线程等:可见 linuxExample
博客代码基于Apache License 2.0 协议进行分发和使用,更多信息参见 协议文件。
所含文章使用以下协议进行保护:署名-非商业性使用-禁止演绎。