Qt Widgets 模块是 Qt 框架中用于创建传统桌面用户界面(GUI)的核心库。它提供了一套完整的、基于 C++ 对象的控件集合,用于构建功能强大、外观类似原生系统的应用程序。
🌟 Qt Widgets 模块核心类及其函数详解
1. 窗口和对话框 (Top-Level Containers)
| 核心类 (Class) | 功能描述 | 常用函数 (Function) 及作用 |
|---|---|---|
QWidget |
所有用户界面对象的基类。 它是构成窗口的基本单元,可以作为独立窗口或嵌入到其他容器中。 | QWidget::show() / hide() : 显示或隐藏控件。 QWidget::setWindowTitle() : 设置窗口标题。 QWidget::setGeometry() / resize() : 设置控件的位置和大小。 QWidget::close() : 关闭窗口,发射 closeEvent()。 QWidget::update() : 强制重绘控件,触发 paintEvent()。 |
QMainWindow |
主窗口类。 专门为提供标准的应用程序界面而设计,包含预设的布局区域。 | QMainWindow::setMenuBar() : 设置主菜单栏。 QMainWindow::addToolBar() : 添加工具栏。 QMainWindow::setCentralWidget() : 设置主窗口的中心区域控件。 QMainWindow::statusBar(): 访问或创建状态栏。 |
QDialog |
对话框窗口的基类。 用于短暂的用户交互,通常以模态(Modal)方式运行。 | QDialog::exec() : 以模态 方式运行对话框(阻塞父窗口)。 QDialog::open() : 以非模态方式运行对话框。 信号 accepted() / rejected(): 当用户点击 OK/Cancel 按钮时发射。 |
2. 基本交互控件 (Input and Display Widgets)
| 核心类 (Class) | 功能描述 | 常用函数 (Function) 及作用 |
|---|---|---|
QPushButton |
按钮控件。 用于触发应用程序中的动作。 | QPushButton::setText() : 设置按钮显示的文本。 QPushButton::setIcon() : 设置按钮图标。 QPushButton::setCheckable() : 设置按钮为可选中/不可选中状态。 信号 clicked(): 按钮被点击时发射(最常用)。 |
QLabel |
文本或图片显示。 用于显示不可编辑的文本、图片或 GIF 动画。 | QLabel::setText() : 设置显示的文本。 QLabel::setPixmap() : 设置显示的图片 (QPixmap)。 QLabel::setWordWrap(): 启用文本自动换行。 |
QLineEdit |
单行文本输入框。 | QLineEdit::text() : 获取当前输入文本 (QString)。 QLineEdit::setText() : 设置文本。 QLineEdit::setPlaceholderText() : 设置占位符文本。 QLineEdit::setEchoMode() : 设置文本显示模式(如密码模式)。 信号 textChanged(const QString &): 文本改变时发射。 |
QTextEdit |
多行富文本编辑器。 支持段落、格式、图片等。 | QTextEdit::toPlainText() : 获取纯文本内容。 QTextEdit::setText() : 设置文本内容。 QTextEdit::setFontFamily() : 设置字体。 QTextEdit::append(): 在文档末尾追加文本。 |
QCheckBox |
复选框。 提供开/关或多选选项。 | QCheckBox::isChecked() : 检查是否被选中。 QCheckBox::setChecked() : 设置选中状态。 信号 toggled(bool): 选中状态改变时发射。 |
3. 布局管理器 (Layout Managers)
布局管理器用于自动管理子控件的位置和大小,确保界面在窗口调整时能够正确伸缩。
| 核心类 (Class) | 功能描述 | 常用函数 (Function) 及作用 |
|---|---|---|
QLayout |
布局基类。 | N/A |
QHBoxLayout |
水平布局。 控件从左到右依次排列。 | QLayout::addWidget(QWidget *widget) : 添加一个控件。 QLayout::addStretch(int stretch = 0): 添加一个可伸缩的空白区域。 |
QVBoxLayout |
垂直布局。 控件从上到下依次排列。 | QLayout::addWidget(QWidget *widget): 添加一个控件。 |
QGridLayout |
网格布局。 控件按行和列排列。 | QGridLayout::addWidget(QWidget *widget, int row, int column, int rowSpan, int columnSpan): 添加控件并指定其起始位置和跨越的行/列数。 |
4. 模型/视图控件 (Model/View Widgets)
用于高效地展示大量复杂数据(如表格、树或列表)。
| 核心类 (Class) | 功能描述 | 常用函数 (Function) 及作用 |
|---|---|---|
QAbstractItemView |
视图基类。 | N/A |
QTableView |
表格视图。 以二维表格形式显示数据。 | QTableView::setModel(QAbstractItemModel *model) : 绑定数据模型(如 QStandardItemModel 或 QSqlTableModel)。 QTableView::setSortingEnabled(): 启用点击表头排序。 |
QTreeView |
树形视图。 以层次结构(树)形式显示数据。 | QTreeView::expandAll() / collapseAll(): 展开或折叠所有节点。 |
QListView |
列表视图。 以简单的列表形式显示数据。 | QListView::setSelectionMode(): 设置用户的选择模式(单选/多选)。 |
5. 其他重要类
| 核心类 (Class) | 功能描述 | 常用函数 (Function) 及作用 |
|---|---|---|
QMessageBox |
标准消息对话框。 用于向用户显示信息、警告或错误。 | QMessageBox::information() / warning() / critical() : 静态函数 ,一键弹出模态对话框。 QMessageBox::addButton(): 添加自定义按钮。 |
QApplication |
桌面应用程序的基类。 继承自 QCoreApplication 并添加了 GUI 特性。 |
QApplication::exec() : 启动 GUI 事件循环(阻塞直到应用程序退出)。 QApplication::setApplicationName(): 设置应用程序名称。 |
QMenuBar |
菜单栏。 用于添加菜单项到 QMainWindow。 |
QMenuBar::addMenu(): 添加一个顶级菜单(如 "File", "Edit")。 |
QAction |
动作对象。 封装了用户界面中的一个逻辑动作,可同时用于菜单项、工具栏按钮或上下文菜单。 | QAction::setText() / setIcon() : 设置显示文本和图标。 信号 triggered(): 动作被激活时发射。 |
💡 Qt Widgets 的核心编程模式
掌握 Qt Widgets 的关键在于理解其核心机制:
- 对象树 (Parent/Child): 所有控件都应该有父控件 (
QWidget *parent)。父控件被删除时,子控件也会被自动删除(自动内存管理)。 - 信号与槽 (Signals & Slots): 这是控件交互的方式。例如,您将
QPushButton的clicked()信号 连接到您自定义类中的一个onButtonClicked()槽。 - 布局 (Layouts): 避免使用绝对坐标 (
setGeometry),而应该使用QHBoxLayout,QVBoxLayout, 或QGridLayout来让界面自适应窗口大小的变化。