Qt Widgets 模块中的函数详解
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来让界面自适应窗口大小的变化。
