一、描述
QStackedWidget 类继承自 QFrame 提供了一堆小部件,其中一次只有一个小部件可见。
QWidget *firstPageWidget = new QWidget;
QWidget *secondPageWidget = new QWidget;
QWidget *thirdPageWidget = new QWidget;
QStackedWidget *stackedWidget = new QStackedWidget;
stackedWidget->addWidget(firstPageWidget);
stackedWidget->addWidget(secondPageWidget);
stackedWidget->addWidget(thirdPageWidget);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(stackedWidget);
setLayout(layout);
QStackedWidget 没有为用户提供切换页面的内在方法。这是使用 QComboBox 的一种方式:
QComboBox *pageComboBox = new QComboBox;
pageComboBox->addItem(tr("Page 1"));
pageComboBox->addItem(tr("Page 2"));
pageComboBox->addItem(tr("Page 3"));
connect(pageComboBox, &QComboBox::activated, stackedWidget, &QStackedWidget::setCurrentIndex);
二、属性成员
1、count : const int
堆叠小部件所包含的小部件数量。
2、currentIndex : int
可见的小部件的索引位置。
三、成员函数
1、【信号】void currentChanged(int index)
每当当前小部件更改时,都会发出此信号。参数为当前小部件的索引。
2、void setCurrentWidget(QWidget *widget)
设置当前小部件。新的当前小部件必须已包含在此堆叠小部件中。
3、void widgetRemoved(int index)
每当移除小部件时都会发出此信号。小部件的索引作为参数传递。
4、int addWidget(QWidget *widget)
将给定的小部件附加到 QStackedWidget 并返回索引位置。小部件的所有权传递给 QStackedWidget。
5、QWidget * currentWidget()
返回当前小部件。
QWidget * widget(int index)
返回给定索引处的小部件。
6、int indexOf(const QWidget *widget)
返回给定小部件的索引,如果给定小部件不是 QStackedWidget 的子级,则返回 -1。
7、int insertWidget(int index, QWidget *widget)
在 QStackedWidget 的给定索引处插入给定的小部件。小部件的所有权传递给 QStackedWidget。 如果 index 超出范围,则在末尾追加小部件(在这种情况下,它是返回的小部件的实际索引)。
8、void removeWidget(QWidget *widget)
从 QStackedWidget 中移除小部件。即小部件没有被删除,而只是从堆叠布局中删除,导致它被隐藏。
注意:小部件的父对象和父小部件将保持为 QStackedWidget。如果应用程序想要重用已移除的小部件,则建议重新设置它的父级。