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 来让界面自适应窗口大小的变化。
相关推荐
white-persist2 小时前
差异功能定位解析:C语言与C++(区别在哪里?)
java·c语言·开发语言·网络·c++·安全·信息可视化
q***72872 小时前
Golang 构建学习
开发语言·学习·golang
hmbbcsm2 小时前
练习python题目小记(五)
开发语言·python
kokunka2 小时前
C#类修饰符功能与范围详解
java·开发语言·c#
仟濹3 小时前
【Java 基础】3 面向对象 - this
java·开发语言·python
Dxy12393102163 小时前
Python一个类的特殊方法有哪些
开发语言·python
爱吃烤鸡翅的酸菜鱼3 小时前
如何用【rust】做一个命令行版的电子辞典
开发语言·rust
不爱学英文的码字机器3 小时前
Rust 并发实战:使用 Tokio 构建高性能异步 TCP 聊天室
开发语言·tcp/ip·rust
redtro953 小时前
【开发备忘】GeoServer相关两则:发布时间维ImageMosaic+客户端WMS样式
java·开发语言·spring