Qt5基础控件详细讲解
个人博客:blogs.wurp.top
一、核心概念回顾:
- 控件 (Widget): Qt 中所有可视化界面元素(按钮、标签、输入框、窗口本身)的基类都是
QWidget
。它提供了处理事件(鼠标、键盘、绘制等)、尺寸策略、布局管理、样式等的基础功能。 - 父对象 (Parent): 控件通常有一个父对象(另一个
QWidget
或QMainWindow
)。父对象负责管理子控件的生命周期(当父对象销毁时,子对象通常也会被自动销毁)和部分几何属性(位置和大小通常受布局管理器约束)。 - 布局管理器 (Layout Manager):
QVBoxLayout
,QHBoxLayout
,QGridLayout
,QFormLayout
等。它们自动管理其内部控件的排列和大小,使界面能适应不同窗口尺寸和屏幕分辨率。强烈建议使用布局管理器而不是手动设置控件的绝对位置和大小。 - 信号与槽 (Signals & Slots): Qt 的核心通信机制。控件在发生特定事件(如按钮被点击、文本改变)时会发出信号。你可以将这些信号连接到其他对象(可以是控件,也可以是自定义的业务逻辑对象)的槽(成员函数)上。当信号发出时,连接的槽函数会被自动调用。这是实现界面交互响应的主要方式。
二、基础控件详解 (按功能分类):
1. 文本显示控件
-
QLabel
- 功能: 显示文本或图片(或两者)。主要用于显示静态信息、标题、说明文字等。
- 关键属性:
text
: 显示的文本字符串。支持富文本(HTML 子集)。pixmap
: 显示的图片(QPixmap
)。alignment
: 文本/图片在标签区域内的对齐方式(Qt::Alignment
标志组合,如Qt::AlignLeft | Qt::AlignVCenter
)。wordWrap
: 是否允许文本自动换行。textFormat
: 文本格式 (Qt::PlainText
,Qt::RichText
,Qt::AutoText
)。indent
: 文本缩进。
- 常用信号:
linkActivated(const QString &link)
(当标签包含超链接且用户点击时发出),linkHovered(const QString &link)
。 - 典型用法:
QLabel *titleLabel = new QLabel("用户信息", this); titleLabel->setAlignment(Qt::AlignCenter); // 居中 QLabel *iconLabel = new QLabel(this); iconLabel->setPixmap(QPixmap(":/images/user.png"));
-
QTextBrowser
- 功能:
QLabel
的增强版,专门用于显示富文本(HTML)和纯文本,并支持超链接导航(前进、后退)、滚动和查找。是只读的。 - 关键属性/方法: 继承自
QTextEdit
,但设置为只读 (setReadOnly(true)
)。常用setSource(const QUrl &name)
加载 HTML 文件或内容。 - 常用信号:
anchorClicked(const QUrl &link)
(用户点击链接时发出),sourceChanged(const QUrl &src)
。 - 典型用法: 显示帮助文档、产品说明、带格式的日志信息。
- 功能:
2. 按钮控件
-
QPushButton
- 功能: 最常用的按钮。用户点击触发操作。
- 关键属性:
text
: 按钮上显示的文本。icon
: 按钮上显示的图标 (QIcon
)。checkable
: 按钮是否可以被“按下/弹起”切换状态(类似开关)。默认false
。checked
: 如果checkable
为true
,表示按钮当前是否处于按下/选中状态。default
: 是否为对话框中的默认按钮(通常响应 Enter 键)。autoDefault
: 控制按钮在获得焦点时是否临时成为默认按钮。
- 常用信号:
clicked()
: 最常用。当用户按下并释放按钮(或通过键盘快捷键触发)时发出。pressed()
: 当用户按下按钮时发出。released()
: 当用户释放按钮时发出。toggled(bool checked)
: 当checkable
按钮的状态改变时发出(checked
表示新状态)。
- 典型用法: 提交表单、确认操作、打开对话框、执行命令。
QPushButton *submitBtn = new QPushButton("提交", this); connect(submitBtn, &QPushButton::clicked, this, &MyWidget::onSubmitClicked); // 连接到槽函数QPushButton *toggleBtn = new QPushButton("开关", this); toggleBtn->setCheckable(true); connect(toggleBtn, &QPushButton::toggled, this, &MyWidget::onToggleChanged);
-
QRadioButton
- 功能: 单选按钮。用于在一组互斥的选项中选择一个。通常放在
QButtonGroup
中管理互斥性。 - 关键属性:
text
: 按钮旁显示的文本。checked
: 是否被选中。autoExclusive
: 通常由QButtonGroup
管理互斥,此项一般保持默认。
- 常用信号:
toggled(bool checked)
(状态改变时发出)。 - 典型用法: 性别选择(男/女)、模式选择(高/中/低)、单项选择。
QRadioButton *maleRadio = new QRadioButton("男", this); QRadioButton *femaleRadio = new QRadioButton("女", this); femaleRadio->setChecked(true); // 默认选中女性// 将它们加入一个按钮组确保互斥 (也可以不显式加组,如果它们在同一个父控件下且autoExclusive为true) QButtonGroup *genderGroup = new QButtonGroup(this); genderGroup->addButton(maleRadio); genderGroup->addButton(femaleRadio);connect(maleRadio, &QRadioButton::toggled, this, [=](bool checked) { if (checked) setGender(Male); });
- 功能: 单选按钮。用于在一组互斥的选项中选择一个。通常放在
-
QCheckBox
- 功能: 复选框。用于表示一个选项是开启还是关闭状态。可以独立选择,也可以部分选择(三态)。
- 关键属性:
text
: 复选框旁显示的文本。checkState
: 检查状态 (Qt::Unchecked
,Qt::PartiallyChecked
,Qt::Checked
)。tristate
: 是否启用三态(支持部分选中)。默认false
(只有开/关两态)。
- 常用信号:
stateChanged(int state)
(状态改变时发出,state
是Qt::CheckState
枚举值)。 - 典型用法: 设置选项(如“记住密码”、“自动登录”)、选择多个条目。
QCheckBox *rememberPwdBox = new QCheckBox("记住密码", this); rememberPwdBox->setChecked(true); connect(rememberPwdBox, &QCheckBox::stateChanged, this, &MyWidget::onRememberPwdChanged);QCheckBox *partialBox = new QCheckBox("部分选项", this); partialBox->setTristate(true); partialBox->setCheckState(Qt::PartiallyChecked);
-
QToolButton
- 功能: 通常出现在工具栏 (
QToolBar
) 上,用于快速访问命令。可以显示图标、文本或两者,并且可以配置弹出菜单 (QMenu
)。 - 关键属性:
icon
: 显示的图标。text
: 显示的文本(通常在工具栏中只显示图标,鼠标悬停时显示文本提示)。toolTip
: 鼠标悬停提示。popupMode
: 弹出菜单的模式(QToolButton::MenuButtonPopup
,QToolButton::InstantPopup
等)。menu
: 关联的弹出菜单 (QMenu *
)。
- 常用信号:
clicked()
(当按钮主体被点击时发出)。菜单项的选择通过菜单的信号处理。 - 典型用法: 工具栏按钮、具有下拉选项的按钮。
QToolButton *fileBtn = new QToolButton(this); fileBtn->setIcon(QIcon(":/icons/file.png")); fileBtn->setText("文件"); fileBtn->setToolTip("文件操作");QMenu *fileMenu = new QMenu(this); fileMenu->addAction("新建"); fileMenu->addAction("打开"); fileMenu->addAction("保存"); fileBtn->setMenu(fileMenu); fileBtn->setPopupMode(QToolButton::MenuButtonPopup); // 旁边有个小箭头
- 功能: 通常出现在工具栏 (
3. 输入控件
-
QLineEdit
- 功能: 单行文本输入框。用于输入用户名、密码(需设置
echoMode
)、搜索关键字等简短文本。 - 关键属性:
text
: 输入框中的文本内容。placeholderText
: 当输入框为空时显示的灰色提示文本。echoMode
: 显示模式 (QLineEdit::Normal
,QLineEdit::Password
,QLineEdit::NoEcho
,QLineEdit::PasswordEchoOnEdit
)。maxLength
: 允许输入的最大字符数。readOnly
: 是否为只读。validator
: 设置输入验证器 (QIntValidator
,QDoubleValidator
,QRegExpValidator
) 限制输入格式。inputMask
: 设置输入掩码 (如电话号码格式"000-0000-0000"
)。
- 常用信号:
textChanged(const QString &text)
: 最常用。文本内容任何改变时发出(每输入/删除一个字符)。textEdited(const QString &text)
: 用户编辑文本时发出(不包括程序设置文本)。returnPressed()
: 用户按下 Enter/Return 键时发出(常用于触发提交)。editingFinished()
: 当输入框失去焦点且内容被编辑过时发出。
- 典型用法: 用户名输入、密码输入、搜索框、短文本输入。
QLineEdit *usernameEdit = new QLineEdit(this); usernameEdit->setPlaceholderText("请输入用户名"); connect(usernameEdit, &QLineEdit::textChanged, this, &MyWidget::validateUsername);QLineEdit *pwdEdit = new QLineEdit(this); pwdEdit->setPlaceholderText("请输入密码"); pwdEdit->setEchoMode(QLineEdit::Password); connect(pwdEdit, &QLineEdit::returnPressed, this, &MyWidget::attemptLogin);
- 功能: 单行文本输入框。用于输入用户名、密码(需设置
-
QTextEdit
- 功能: 多行富文本编辑器。支持纯文本和富文本(HTML)的输入、显示和编辑。功能强大,支持格式化文本、插入图片/列表/表格、查找替换、语法高亮(需自定义)等。
- 关键属性/方法:
toPlainText()
: 获取纯文本内容。toHtml()
: 获取 HTML 格式内容。setPlainText(const QString &text)
: 设置纯文本内容。setHtml(const QString &html)
: 设置 HTML 内容。setReadOnly(bool)
: 设置只读。document()
: 返回底层的QTextDocument
对象,提供更高级的文档操作接口。
- 常用信号:
textChanged()
(文档内容改变时发出)。 - 典型用法: 长文本输入(评论、描述、邮件正文)、富文本编辑器、代码编辑器(配合语法高亮)、日志显示区。
-
QPlainTextEdit
- 功能: 优化的多行纯文本编辑器。相比
QTextEdit
在处理非常大的纯文本文件时性能更高、内存占用更少。不支持富文本。 - 关键属性/方法: 与
QTextEdit
类似,但主要使用setPlainText()
,toPlainText()
。有专门针对大文本优化的 API,如blockCount()
(段落数),lineWrapMode
。 - 常用信号:
textChanged()
,blockCountChanged(int newBlockCount)
,modificationChanged(bool changed)
。 - 典型用法: 代码编辑器、日志查看器、大文本文件查看/编辑。
- 功能: 优化的多行纯文本编辑器。相比
-
QComboBox
- 功能: 组合框/下拉列表框。用户可以从预定义的选项列表中选择一项,也可以(如果
editable
为true
)输入自定义文本。 - 关键属性:
currentIndex
: 当前选中项的索引(从 0 开始)。currentText
: 当前项的文本(如果是可编辑的,可能是用户输入)。editable
: 是否允许用户编辑输入。model
: 数据模型(通常使用QStandardItemModel
或QStringListModel
)。更常用的是通过addItem()
,insertItem()
,addItems()
等方法添加项。count
: 项的数量。
- 常用信号:
currentIndexChanged(int index)
: 最常用。当前选中项索引改变时发出。currentTextChanged(const QString &text)
: 当前文本改变时发出(包括编辑时)。activated(int index)
: 用户激活(选择)了某一项时发出(与currentIndexChanged
区别在于,后者也可能由程序设置触发)。
- 典型用法: 国家/地区选择、分类选择、提供预设值列表。
QComboBox *countryCombo = new QComboBox(this); countryCombo->addItem("中国"); countryCombo->addItem("美国"); countryCombo->addItem("日本"); countryCombo->setCurrentIndex(0); // 默认选中中国 connect(countryCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MyWidget::onCountryChanged);QComboBox *searchCombo = new QComboBox(this); searchCombo->setEditable(true); searchCombo->addItems(QStringList() << "最近搜索1" << "最近搜索2");
- 功能: 组合框/下拉列表框。用户可以从预定义的选项列表中选择一项,也可以(如果
-
QSpinBox
- 功能: 整数调节框。允许用户通过上下箭头按钮或直接输入来选择一个整数值。
- 关键属性:
value
: 当前整数值。minimum
: 最小值。maximum
: 最大值。singleStep
: 按一次箭头按钮改变的步长。prefix
: 显示在数值前面的文本(如 “$”)。suffix
: 显示在数值后面的文本(如 “px”)。
- 常用信号:
valueChanged(int value)
(值改变时发出)。 - 典型用法: 年龄、数量、尺寸等整数值的输入。
-
QDoubleSpinBox
- 功能: 浮点数调节框。功能类似
QSpinBox
,但用于浮点数。 - 关键属性: 除了
value
是double
类型,还有decimals
(显示的小数位数)。 - 常用信号:
valueChanged(double value)
。 - 典型用法: 价格、比例、坐标等浮点数值的输入。
- 功能: 浮点数调节框。功能类似
-
QSlider
- 功能: 滑块控件。允许用户通过拖动滑块在一个范围内选择一个值(整数)。有水平 (
Qt::Horizontal
) 和垂直 (Qt::Vertical
) 两种方向。 - 关键属性:
value
: 当前值。minimum
: 最小值。maximum
: 最大值。singleStep
: 按键盘方向键移动的步长。pageStep
: 按 PgUp/PgDn 键或点击滑块轨道移动的步长。tickPosition
: 刻度线位置 (QSlider::NoTicks
,QSlider::TicksAbove
,QSlider::TicksBelow
,QSlider::TicksBothSides
)。tickInterval
: 刻度线间隔。orientation
: 方向 (Qt::Horizontal
或Qt::Vertical
)。
- 常用信号:
valueChanged(int value)
(值改变时发出),sliderMoved(int position)
(用户拖动滑块时连续发出),sliderReleased()
(用户释放滑块时发出)。 - 典型用法: 音量控制、亮度调节、进度指示(与
QProgressBar
配合)、范围选择。
- 功能: 滑块控件。允许用户通过拖动滑块在一个范围内选择一个值(整数)。有水平 (
-
QProgressBar
- 功能: 进度条。用于显示任务的进度。
- 关键属性:
value
: 当前进度值。minimum
: 最小值(通常为 0)。maximum
: 最大值(通常为 100)。textVisible
: 是否显示百分比文本。alignment
: 文本对齐方式。format
: 文本格式字符串(如"%p%"
显示百分比,"%v/%m"
显示 “当前值/最大值”)。orientation
: 方向 (Qt::Horizontal
或Qt::Vertical
)。
- 常用方法:
reset()
(重置进度),setRange(int min, int max)
。 - 常用信号:
valueChanged(int value)
。 - 典型用法: 文件下载/上传进度、长时间操作进度指示。
4. 选择控件
-
QListWidget
- 功能: 基于项 (
QListWidgetItem
) 的列表视图控件。提供列表形式的项目选择。 - 关键属性/方法:
currentItem()
: 当前选中的项。selectedItems()
: 所有选中的项(支持多选时)。currentRow()
: 当前选中项的行号。selectedRows()
: 所有选中项的行号。addItem(QListWidgetItem *)
/addItem(const QString &text)
: 添加项。setSelectionMode(QAbstractItemView::SelectionMode)
: 设置选择模式 (SingleSelection
,MultiSelection
,ExtendedSelection
,ContiguousSelection
,NoSelection
)。
- 常用信号:
currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
: 当前项改变。itemSelectionChanged()
: 选择项集合改变时发出。itemClicked(QListWidgetItem *item)
: 点击项时发出。itemDoubleClicked(QListWidgetItem *item)
: 双击项时发出(常用于打开/执行)。
- 典型用法: 文件列表、联系人列表、选项列表(支持多选)。
- 功能: 基于项 (
-
QTreeWidget
- 功能: 树形视图控件。用于显示具有父子层次结构的数据(如文件系统目录结构、组织架构)。
- 关键概念:
QTreeWidgetItem
: 表示树中的一个项(节点)。可以有父节点和子节点。QTreeWidget
: 控件本身。
- 关键属性/方法:
headerItem()
/setHeaderLabels(const QStringList &labels)
: 设置表头。topLevelItem(int index)
: 获取顶级项。currentItem()
: 当前选中的项。selectedItems()
: 选中的项。invisibleRootItem()
: 获取不可见的根项(所有顶级项的父项)。- 通过
QTreeWidgetItem
操作:addChild(QTreeWidgetItem *)
,insertChild(int index, QTreeWidgetItem *)
,childCount()
,child(int index)
,parent()
,text(int column)
,setText(int column, const QString &text)
,setIcon(int column, const QIcon &icon)
等。
- 常用信号:
currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
,itemSelectionChanged()
,itemClicked(QTreeWidgetItem *item, int column)
,itemDoubleClicked(QTreeWidgetItem *item, int column)
,itemExpanded(QTreeWidgetItem *item)
,itemCollapsed(QTreeWidgetItem *item)
。 - 典型用法: 文件浏览器、资源管理器、带分类的配置选项。
-
QTableWidget
- 功能: 表格视图控件。用于显示和编辑二维表格数据。
- 关键概念:
QTableWidgetItem
: 表示表格中的一个单元格。QTableWidget
: 控件本身。
- 关键属性/方法:
rowCount()
,columnCount()
,setRowCount(int)
,setColumnCount(int)
: 行列数。horizontalHeader()
,verticalHeader()
: 获取水平/垂直表头对象 (QHeaderView
),可用于设置标题、调整策略等。setHorizontalHeaderLabels(const QStringList &labels)
,setVerticalHeaderLabels(const QStringList &labels)
: 设置表头标签。item(int row, int column)
: 获取指定单元格的项。setItem(int row, int column, QTableWidgetItem *item)
: 设置单元格项。currentItem()
,currentRow()
,currentColumn()
,selectedItems()
,selectedRanges()
: 选择和当前项信息。setSelectionBehavior(QAbstractItemView::SelectionBehavior)
: 选择行为(选择行、选择列、选择项)。setSelectionMode(QAbstractItemView::SelectionMode)
: 选择模式(单选、多选等)。
- 常用信号:
cellChanged(int row, int column)
,cellClicked(int row, int column)
,cellDoubleClicked(int row, int column)
,currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
,itemSelectionChanged()
。 - 典型用法: 数据表展示(如数据库查询结果)、电子表格应用、属性编辑器。
5. 容器控件
-
QGroupBox
- 功能: 分组框。提供一个带标题的边框,用于将逻辑上相关的控件组织在一起,提升界面可读性。
- 关键属性:
title
: 分组框的标题文本。checkable
: 标题前是否显示一个复选框。如果可勾选,状态由checked
属性控制。checked
: 如果checkable
为true
,表示分组框是否被选中(启用)。分组框内的子控件会随其启用/禁用状态改变。alignment
: 标题文本的对齐方式 (Qt::Alignment
)。
- 常用信号:
toggled(bool checked)
(如果可勾选,状态改变时发出)。 - 典型用法: 将表单中的个人信息、设置选项等分组。
QGroupBox *infoGroup = new QGroupBox("个人信息", this); QVBoxLayout *infoLayout = new QVBoxLayout(infoGroup); // 为分组框创建布局 infoLayout->addWidget(new QLabel("姓名:", infoGroup)); infoLayout->addWidget(new QLineEdit(infoGroup)); // ... 添加其他个人信息控件
-
QTabWidget
- 功能: 选项卡控件。提供多个标签页 (
QWidget
),用户可以通过点击标签在不同的页面间切换,节省屏幕空间。 - 关键属性/方法:
currentIndex()
: 当前活动页的索引。currentWidget()
: 当前活动页的QWidget
指针。addTab(QWidget *page, const QString &label)
: 添加一个新标签页。insertTab(int index, QWidget *page, const QString &label)
: 在指定位置插入标签页。removeTab(int index)
: 移除标签页。setTabText(int index, const QString &text)
: 设置标签文本。setTabIcon(int index, const QIcon &icon)
: 设置标签图标。tabPosition()
: 标签位置 (QTabWidget::North
,South
,West
,East
)。
- 常用信号:
currentChanged(int index)
(当前活动页改变时发出)。 - 典型用法: 多页面设置对话框、具有不同功能模块的主界面(如聊天窗口的“联系人”/“群聊”/“文件”标签)。
QTabWidget *tabWidget = new QTabWidget(this);QWidget *page1 = new QWidget; // 为page1添加布局和控件... tabWidget->addTab(page1, "基本设置");QWidget *page2 = new QWidget; // 为page2添加布局和控件... tabWidget->addTab(page2, "高级设置");connect(tabWidget, &QTabWidget::currentChanged, this, &MyWidget::onTabChanged);
- 功能: 选项卡控件。提供多个标签页 (
-
QStackedWidget
- 功能: 堆叠控件。类似于
QTabWidget
,管理多个页面 (QWidget
),但没有内置的标签切换界面。你需要通过其他控件(如按钮、列表、QTabWidget
的标签但不显示内容区)来控制当前显示哪个页面 (setCurrentIndex(int index)
,setCurrentWidget(QWidget *widget)
)。 - 关键方法:
addWidget(QWidget *)
,insertWidget(int index, QWidget *)
,removeWidget(QWidget *)
,currentIndex()
,currentWidget()
,setCurrentIndex(int)
,setCurrentWidget(QWidget *)
,count()
. - 常用信号:
currentChanged(int index)
. - 典型用法: 向导界面(上一步/下一步切换页面)、根据菜单选择动态改变主内容区、实现自定义标签切换效果的界面(比
QTabWidget
更灵活)。
- 功能: 堆叠控件。类似于
-
QFrame
- 功能: 基础框架控件。它本身没有太多内容,主要用于:
- 视觉分隔: 通过设置边框样式 (
frameShape
,frameShadow
) 和线条宽度 (lineWidth
) 在界面上绘制线条或框,将不同区域分隔开。 - 容器: 作为其他控件的容器,特别是当你需要一个有特定边框的容器时。
- 视觉分隔: 通过设置边框样式 (
- 关键属性:
frameShape
: 边框形状 (QFrame::NoFrame
,Box
,Panel
,StyledPanel
,HLine
,VLine
,WinPanel
)。frameShadow
: 边框阴影 (QFrame::Plain
,Raised
,Sunken
)。lineWidth
: 边框线宽。midLineWidth
: 对于某些形状(如Panel
),中间线的宽度。
- 典型用法:
// 创建一个水平分隔线 QFrame *hline = new QFrame(this); hline->setFrameShape(QFrame::HLine); hline->setFrameShadow(QFrame::Sunken);// 创建一个带凸起边框的容器 QFrame *container = new QFrame(this); container->setFrameShape(QFrame::StyledPanel); container->setFrameShadow(QFrame::Raised); QVBoxLayout *contLayout = new QVBoxLayout(container); // ... 在container中添加其他控件
- 功能: 基础框架控件。它本身没有太多内容,主要用于:
6. 其他常用控件
- QDateEdit / QTimeEdit / QDateTimeEdit
- 功能: 日期、时间、日期时间选择器。提供方便的日历弹出框或上下箭头选择。
- 关键属性:
date
,time
,dateTime
,minimumDate
/Time
/DateTime
,maximumDate
/Time
/DateTime
,displayFormat
(设置显示格式字符串)。 - 常用信号:
dateChanged(const QDate &date)
,timeChanged(const QTime &time)
,dateTimeChanged(const QDateTime &datetime)
.
- QDial
- 功能: 圆形刻度盘控件。常用于模拟设备的旋钮控制(如音量旋钮)。
- 关键属性:
value
,minimum
,maximum
,singleStep
,pageStep
,notchesVisible
,notchTarget
。 - 常用信号:
valueChanged(int value)
.
- QLCDNumber
- 功能: 模拟 LCD 数字显示屏。用于显示数字(整数或浮点数),具有类似计算器或电子表的显示效果。
- 关键属性:
digitCount
,intValue
,value
(double),smallDecimalPoint
,mode
(Hex
,Dec
,Oct
,Bin
),segmentStyle
(Outline
,Filled
,Flat
). - 常用方法:
display(int num)
,display(double num)
.
三、总结与进阶建议:
- 掌握基础: 熟练使用上述基础控件是 Qt GUI 开发的核心。理解它们的属性、信号和典型应用场景。
- 拥抱布局: 务必使用布局管理器 (
QVBoxLayout
,QHBoxLayout
,QGridLayout
,QFormLayout
) 来排列控件。这是创建可伸缩、适应性强界面的关键。避免使用setGeometry
进行绝对定位,除非有非常特殊的、静态的需求。 - 活用信号与槽: 这是 Qt 的灵魂。将控件的信号(如按钮的
clicked()
,输入框的textChanged()
)连接到你的业务逻辑槽函数上,实现交互响应。使用connect
函数建立连接。 - 探索模型/视图 (Model/View): 对于复杂的数据展示(列表、树、表格),理解
QListView
,QTreeView
,QTableView
与QAbstractItemModel
子类 (QStandardItemModel
,QFileSystemModel
等) 的配合使用是进阶之路。它提供了数据与视图分离、更高效处理大数据集的能力。 - 样式定制: 使用 Qt 样式表 (
QSS
) 可以深度定制控件的外观,使其符合你的应用程序主题或品牌要求。语法类似于 CSS。
通过学习和实践这些基础控件,你将能够构建出功能丰富、交互流畅的 Qt 桌面应用程序界面。祝你学习顺利!