Qt 与 GTK 图形框架教程
Qt 与 GTK 图形框架教程 / Qt & GTK Graphics Framework Tutorial
一套由浅入深的 Qt 与 GTK 完整教程,涵盖 C++ 与 Python 双语言实现。 A comprehensive Qt & GTK tutorial with C++ and Python examples.
目录 / Table of Contents
| # | 章节 / Chapter | 关键词 / Keywords |
|---|---|---|
| 1 | Qt 与 GTK 概述 / Introduction | 历史, 许可证, 选型 |
| 2 | Qt 基础 / Qt Basics | 信号与槽, 元对象, 属性 |
| 3 | Qt Widgets 控件 / Qt Widgets | 布局, 对话框, 菜单, 样式 |
| 4 | QML 与 Qt Quick | 声明式UI, 动画, 移动端 |
| 5 | Qt 网络编程 / Qt Network | TCP, UDP, HTTP, WebSocket |
| 6 | Qt 数据库 / Qt Database | SQL, 模型视图, 委托 |
| 7 | GTK 基础 / GTK Basics | GObject, 信号, GType |
| 8 | GTK4 控件 / GTK4 Widgets | 布局, 列表, 树, CSS |
| 9 | libadwaita 现代化 / libadwaita | 自适应, 暗色模式, HIG |
| 10 | Python 绑定 / Python Bindings | PyQt, PySide, gi |
| 11 | 跨平台开发 / Cross-Platform | 部署, 打包, 安装器 |
| 12 | 主题与样式 / Theming | QSS, GTK CSS, 暗色模式 |
| 13 | 数据库集成 / Database Integration | ORM, CRUD, 表单验证 |
| 14 | UI 测试 / Testing | QTest, pytest-gtk, 自动化 |
| 15 | Docker 容器化 / Docker | X11, Wayland, 容器化开发 |
| 16 | 最佳实践 / Best Practices | MVC, MVVM, 性能, 国际化 |
适用读者 / Target Audience
| 读者类型 / Reader Type | 建议 / Suggestion |
|---|---|
| 🟢 初学者 / Beginner | 从第 1 章开始,按顺序阅读 / Start from Chapter 1 |
| 🟡 有经验者 / Experienced | 直接跳到感兴趣的章节 / Jump to needed chapter |
| 🔴 架构师 / Architect | 重点阅读第 11、16 章 / Focus on Ch.11 & Ch.16 |
| 🐍 Python 开发者 / Python Dev | 重点阅读第 10 章 / Focus on Ch.10 |
每章结构 / Chapter Structure
每章均包含以下部分:
- 概述 — 核心概念介绍 / Overview — core concepts
- 代码示例 — C++ 与 Python 可运行代码 / Code — runnable C++ & Python
- 表格 — API 速查 / Tables — API reference
- 业务场景 — 实际应用 / Business scenarios
- 注意事项 — 常见陷阱 / Pitfalls & notes
- 扩展阅读 — 官方文档链接 / Further reading
框架对比速览 / Quick Comparison
| 特性 / Feature | Qt 6 | GTK 4 |
|---|---|---|
| 语言 / Language | C++ (QML/JS) | C (多语言绑定) |
| 许可证 / License | LGPLv3 / GPLv3 / 商业 | LGPLv2.1+ |
| 控件工具包 / Widget Kit | Qt Widgets + Qt Quick | GTK Widgets |
| 声明式 UI / Declarative | QML | 无(GTK4 使用 XML/Blueprint) |
| 移动端 / Mobile | ✅ Android/iOS | ❌ 仅桌面 |
| 主流发行版默认 / Default DE | KDE Plasma | GNOME |
| 开发 IDE / IDE | Qt Creator | GNOME Builder |
| 构建系统 / Build System | CMake / qmake | Meson |
| Python 绑定 / Python Bind | PyQt6 / PySide6 | PyGObject (gi) |
环境准备 / Prerequisites
安装 Qt 6 / Install Qt 6
# Ubuntu / Debian
sudo apt install qt6-base-dev qt6-declarative-dev qtcreator
# Fedora
sudo dnf install qt6-qtbase-devel qt6-qtdeclarative-devel qt-creator
# Arch Linux
sudo pacman -S qt6-base qt6-declarative qt6-tools qtcreator
# macOS (Homebrew)
brew install qt@6
安装 GTK 4 / Install GTK 4
# Ubuntu / Debian
sudo apt install libgtk-4-dev libadwaita-1-dev
# Fedora
sudo dnf install gtk4-devel libadwaita-devel
# Arch Linux
sudo pacman -S gtk4 libadwaita
# macOS (Homebrew)
brew install gtk4 libadwaita
安装 Python 绑定 / Install Python Bindings
# PyQt6
pip install PyQt6
# PySide6
pip install PySide6
# GTK Python (PyGObject)
pip install PyGObject
# Ubuntu 额外依赖
sudo apt install python3-gi gir1.2-gtk-4.0 gir1.2-adw-1
学习路线图 / Learning Roadmap
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 01 概述 │───▶│ 02 Qt 基础 │───▶│ 03 Widgets │
│ Introduction│ │ Qt Basics │ │ Qt Widgets │
└──────────────┘ └──────────────┘ └──────┬───────┘
│
┌──────────────────────────┼──────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────────┐ ┌──────────────┐
│ 04 QML │ │ 07 GTK 基础 │ │ 10 Python │
│ Qt Quick │ │ GTK Basics │ │ Bindings │
└──────────┘ └──────┬───────┘ └──────────────┘
│ │
▼ ▼
┌──────────┐ ┌──────────────┐
│ 05-06 │ │ 08-09 GTK │
│ Network │ │ Widgets+Adw │
│ Database │ └──────────────┘
└──────────┘
│
┌───────────┼───────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────────┐
│ 11 跨平台│ │ 12 主题 │ │ 13 数据库集成│
└──────────┘ └──────────┘ └──────────────┘
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────────┐
│ 14 测试 │ │ 15 Docker│ │ 16 最佳实践 │
└──────────┘ └──────────┘ └──────────────┘
提示 / Tip: 建议配合实际代码练习,每章代码均可独立编译运行。 Suggested: practice with real code. Each chapter’s code is independently compilable.