Qt QStackedWidget 总结
概述
QStackedWidget
是 Qt 中的一个容器控件,用于管理多个子界面(页面),但一次只显示一个。类似于标签页,但隐藏了切换标签的 UI,需手动控制页面切换逻辑。常用于向导界面、分步表单、动态布局切换等场景。
核心特性
-
多页面管理
- 可添加多个
QWidget
作为子页面。 - 通过索引(
index
)或指针(QWidget*
)访问页面。
- 可添加多个
-
当前页面控制
- 通过
setCurrentIndex(int)
或setCurrentWidget(QWidget*)
切换页面。 - 当前页面变化时触发
currentChanged(int)
信号。
- 通过
-
动态增删页面
- 支持运行时动态添加(
addWidget()
)、插入(insertWidget()
)或移除(removeWidget()
)页面。
- 支持运行时动态添加(
-
轻量级无动画
- 默认无切换动画,需结合
QPropertyAnimation
等实现滑动、淡入淡出效果。
- 默认无切换动画,需结合
常用方法
方法 | 作用 |
---|---|
addWidget(QWidget*) |
添加页面,返回索引 |
insertWidget(int index, QWidget*) |
在指定位置插入页面 |
removeWidget(QWidget*) |
移除页面(不删除对象) |
currentWidget() const |
获取当前显示的页面指针 |
currentIndex() const |
获取当前页面的索引 |
setCurrentIndex(int) |
通过索引切换页面 |
setCurrentWidget(QWidget*) |
通过指针切换页面 |
widget(int index) const |
根据索引获取页面指针 |
count() const |
获取页面总数 |
信号
currentChanged(int index)
当当前页面切换时触发,参数为新页面的索引。
基本使用示例
// 创建 QStackedWidget 实例
QStackedWidget *stackedWidget = new QStackedWidget;
// 添加页面
QWidget