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) : 绑定数据模型(如 QStandardItemModelQSqlTableModel)。 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 的关键在于理解其核心机制:

  1. 对象树 (Parent/Child): 所有控件都应该有父控件 (QWidget *parent)。父控件被删除时,子控件也会被自动删除(自动内存管理)。
  2. 信号与槽 (Signals & Slots): 这是控件交互的方式。例如,您将 QPushButtonclicked() 信号 连接到您自定义类中的一个 onButtonClicked()
  3. 布局 (Layouts): 避免使用绝对坐标 (setGeometry),而应该使用 QHBoxLayout, QVBoxLayout, 或 QGridLayout 来让界面自适应窗口大小的变化。
相关推荐
Brilliantwxx14 分钟前
【STM32】 I2C_EEPROM_test 工程(实战篇)
开发语言·stm32·单片机·嵌入式硬件·ecmascript
清水白石00819 分钟前
Python 异步编程深度解析:Cancellation 到底是异常还是控制信号?从 asyncio 取消机制到企业级事务设计最佳实践
开发语言·python
kolyle25 分钟前
万级 QPS 下的 Token 分发系统架构:从 0 到 1 跑通 AI 时代的“水电煤“
开发语言·人工智能·系统架构·token·qps·极智词元·大模型私有化部署
caoerzhong38 分钟前
JeeWMS 开源仓库管理系统 GPL-3.0 合规指南:Java WMS 二次开发前必须弄清的授权边界
java·开发语言·开源·vue
Patrick在香港38 分钟前
Python 审计香港开放数据目录:两个端点差 10 倍,只有 9.3% 的资源标了「最后修改时间」
开发语言·数据库·python·数据分析·api·数据治理·开放数据
Sylvia33.1 小时前
火星数据体育API|一站式接入足球篮球电竞等18+项目实时数据
java·开发语言·python·websocket·游戏
Data_Journal2 小时前
使用 AutoScraper 进行网页抓取:分步教程
大数据·开发语言·数据库·python·scrapy
yume_sibai2 小时前
12-Rust 性能优化指南(性能分析 + 内存优化 + SIMD + 并发优化 + 编译器优化 + 基准测试)
开发语言·性能优化·rust
萧瑟余晖2 小时前
Hibernate 核心原理与架构详解
开发语言·架构·hibernate
爱喝水的鱼丶2 小时前
SAP-ABAP:SAP MM 模块物料主数据批量导入与增强开发:字段扩展、校验逻辑与批量导入工具开发
开发语言·性能优化·sap·abap·增强·经验交流·mm