title: Qt事件绘图与文件系统
tags:
- module
- qt
- event
- paint
- joplin
type: module
source_type: reconstructed
created: 2026-04-23
updated: 2026-04-23
---
Qt事件绘图与文件系统
[!abstract]
这一模块处理 Qt 程序“怎么从静态界面变成完整应用”的问题,核心包括事件分发、绘图设备、画家模型和文件系统接口。
模块结论
- Qt 的交互核心不只在信号槽,还在统一的事件分发模型。
- 绘图通常通过
QPainter 在特定设备上完成,设备与绘图逻辑要区分开。
QPixmap、QImage、QPicture 等类型服务于不同的绘图和存储场景。
- 文件系统接口让 Qt 应用能稳定处理文本、目录和外部数据。
一、事件机制的主线
- 系统或用户产生事件
- Qt 事件循环接收事件
- 事件分发给对应对象
- 对象通过
event() 或具体事件处理函数响应
复习重点
- 事件循环是总入口
- 具体控件往往通过重写对应事件函数定制行为
- 信号槽偏“语义触发”,事件机制偏“底层输入与分发”
二、什么时候该想到事件机制
- 鼠标点击、移动、进入离开
- 键盘输入
- 窗口大小变化
- 绘制请求
如果问题是“底层输入怎么到控件”,先想事件;如果问题是“动作发生后谁来处理业务”,再想信号槽。
三、绘图系统怎样理解
QPainter:谁来画
QPaintDevice:画到哪
QPen / QBrush:怎么画
常见绘图设备
QWidget
QPixmap
QImage
QPicture
记忆方法
QPixmap 更偏界面显示
QImage 更偏像素级处理
QPicture 更像绘图指令记录
四、文件系统的作用
- 读写文本文件
- 访问目录和路径
- 配合资源系统或外部文件完成应用数据管理
Qt 在这里提供统一风格 API,降低跨平台路径处理差异。
五、资源与外部文件的边界
- 稳定静态资源:更适合放进
qrc
- 用户数据、配置和外部文档:更适合走文件系统
这个区分对于桌面应用很重要。否则代码里会混淆“程序自带资源”和“运行期数据”。
六、易错点
- 把所有交互都抽成信号槽,不区分事件层与语义层。
- 在错误的设备类型上做不合适的绘图处理。
- 不区分资源内嵌路径和外部文件路径。
- 文件系统操作只记类名,不理解它在应用数据流中的位置。
七、复习提问
- 事件机制和信号槽分别更适合处理哪类问题?
QPainter 与绘图设备之间是什么关系?
- 哪些资源应内嵌到
qrc,哪些应保留为外部文件?
来源
- [[raw/Joplin/编程学习项目/使用Qt和C++构造UI界面/9. Qt消息机制和事件.md]]
- [[raw/Joplin/编程学习项目/使用Qt和C++构造UI界面/10 绘图和绘图设备.md]]
- [[raw/Joplin/编程学习项目/使用Qt和C++构造UI界面/11 文件系统.md]]
相关页面
- [[Qt]]
- [[Qt事件机制]]
- [[QPainter]]
- [[Qt文件系统]]