目录
[1. 基础对象模型(QObject)](#1. 基础对象模型(QObject))
[2. 事件系统(QEvent)](#2. 事件系统(QEvent))
[1. 窗口部件(Widgets)](#1. 窗口部件(Widgets))
[2. 图形视图框架(Graphics View)](#2. 图形视图框架(Graphics View))
[1. 模型/视图框架(Model/View)](#1. 模型/视图框架(Model/View))
[2. 容器类](#2. 容器类)
[1. 文件与IO](#1. 文件与IO)
[2. 网络通信](#2. 网络通信)
[3. 多线程](#3. 多线程)
[六、Qt Quick框架(QML)](#六、Qt Quick框架(QML))
一、Qt核心组件类概述
Qt是一个跨平台的C++应用程序开发框架,其核心组件类构成了构建图形用户界面(GUI)和应用程序逻辑的基础。这些组件类主要分为以下几个层次:
二、核心框架类
1. 基础对象模型(QObject)
QObject是Qt对象模型的核心,提供了以下关键特性:
- 信号与槽(Signals & Slots):Qt独有的对象间通信机制
- 对象树(Object Tree):自动内存管理,父对象删除时自动删除子对象
- 属性系统(Property System):支持动态属性
- 元对象系统(Meta-Object System):运行时类型信息和动态属性
2. 事件系统(QEvent)
Qt的事件系统处理用户输入、定时器、绘图等所有交互:
- QEvent:所有事件的基类
- QKeyEvent:键盘事件
- QMouseEvent:鼠标事件
- QPaintEvent:绘图事件
- QTimerEvent:定时器事件
三、GUI组件类框架
1. 窗口部件(Widgets)
QWidget是所有用户界面对象的基类:
- 基础窗口类:QMainWindow、QDialog、QWidget
- 布局管理:QHBoxLayout、QVBoxLayout、QGridLayout、QFormLayout
- 按钮类:QPushButton、QRadioButton、QCheckBox
- 文本输入:QLineEdit、QTextEdit、QPlainTextEdit
- 列表视图:QListWidget、QTreeWidget、QTableWidget
- 容器类:QGroupBox、QTabWidget、QScrollArea
----------------------------QMainWindow、QDialog、QWidget对比------------------------------------------
1.QWidget:是所有窗口控件的基类
特点:
- 最轻量,没有内置菜单栏,工具栏,控制栏;
- 可以当独立窗口(show()),也能嵌入其他窗口,适合小型的简易页面
**创建:**Widget w; w.show();
2.QMainWindow:是主程序的大窗口(软件的主界面)
它继承自QWidget,是完整主窗口框架,专门做软件首页
内置专属布局结构(独有):
┌───────────────────── 菜单栏 menuBar
├───────────────────── 工具栏 toolBar
├───────────────────── 中心窗口 centralWidget(必须放你的界面控件)
├───────────────────── 停靠窗口 dockWidget
└───────────────────── 状态栏 statusBar
**适用场景:**编辑器、绘图软件、播放器、管理系统这类大型程序主界面
强制规则:必须给它设置centralWidget,否则控件无法显示
3.QDialog:弹窗对话框
专门做弹窗,提示框,二级弹出页面
特点:
- 默认带(确认/取消按钮),如果窗口弹出,无法操作父窗口;
- 没有菜单栏,工具栏,状态栏;
- 两种模式:
- 模态
exec():卡住主线程,必须关弹窗才能操作主界面; - 非模态
show():弹窗和主窗口可同时操作
- 模态
**适用场景:**登录弹窗、确认提示、设置窗口、文件选择框
自带便捷的子类 :QMessageBox 消息框、**QFileDialog**文件选择器,都属于 Dialog 体系
---------------------------------------------------------------------------------------------------------------------------
如何选择?
如果你想写小工具,简易的页面(计算器)--->直接用QWidget
如果你想做软件主界面,需要菜单栏,工具栏,底部状态文字 --->QMainWindow
如果点击按钮可以弹出一个小窗口(登录/确认/参数设置)--->QDialog
2. 图形视图框架(Graphics View)
用于管理大量自定义2D图形项:
- QGraphicsScene:图形场景容器
- QGraphicsView:视图部件,显示场景内容
- QGraphicsItem:所有图形项的基类
四、数据与模型类
1. 模型/视图框架(Model/View)
将数据与显示分离的高级架构:
- 模型类:QAbstractItemModel、QStandardItemModel、QFileSystemModel
- 视图类:QListView、QTreeView、QTableView
- 委托类:QAbstractItemDelegate、QStyledItemDelegate
2. 容器类
Qt提供了一系列模板容器类:
- QList、QVector:动态数组
- QMap、QHash:键值对映射
- QSet:集合
- QStack、QQueue:栈和队列
五、核心功能类
1. 文件与IO
- QFile、QDir:文件和目录操作
- QTextStream、QDataStream:数据流
- QSettings:应用程序设置
2. 网络通信
- QTcpSocket、QUdpSocket:TCP/UDP套接字
- QNetworkAccessManager:HTTP客户端
- QNetworkReply:网络响应
3. 多线程
- QThread:线程类
- QMutex、QReadWriteLock:同步原语
- QSemaphore、QWaitCondition:线程协调
六、Qt Quick框架(QML)
用于声明式UI开发的现代框架:
- QQuickItem:QML可视项基类
- QQuickWindow:QML窗口
- QQmlApplicationEngine:QML应用引擎
七、实用工具类
- QString:Unicode字符串处理
- QDateTime、QDate、QTime:日期时间
- QTimer:定时器
- QCoreApplication、QApplication:应用程序类
八、学习路径建议
- 入门阶段:掌握QObject、QWidget、布局管理、信号与槽
- 进阶阶段:学习模型/视图框架、多线程、网络编程
- 高级阶段:深入Qt Quick/QML、自定义绘制、插件开发
- 实战阶段:结合具体项目,如图形编辑器、网络工具、跨平台应用
九、总结
Qt的核心组件类构成了一个层次清晰、功能完善的框架体系。从基础的对象模型到高级的GUI组件,从数据管理到网络通信,Qt提供了全面的解决方案。掌握这个框架结构,能够帮助开发者更高效地构建跨平台的C++应用程序。