
`QStackedWidget` 是Qt中的一个容器类,用于显示一组窗口小部件,只有一个窗口可见。我们可以在这个小部件上进行一些操作,如添加和删除窗口,切换显示的窗口等。
Qt提供了`QStackedWidget`类来实现多个窗口的堆叠显示。它是QWidget类的子类,可以将多个QWidget子类的对象添加到其中,并通过索引来选择显示哪个QWidget子类的对象。
使用 QStackedWidget
使用`QStackedWidget`非常简单。首先,我们需要将其添加到主窗口或一个父窗口上:
```cpp
QStackedWidget *stackedWidget = new QStackedWidget(this);
```
然后,我们可以通过`addWidget()`方法将QWidget子类的对象添加到`QStackedWidget`中:
```cpp
QWidget *page1 = new QWidget;
stackedWidget->addWidget(page1);
QWidget *page2 = new QWidget;
stackedWidget->addWidget(page2);
```
在添加完所有窗口后,我们可以使用`currentIndex()`方法获取当前显示的窗口索引。我们可以通过`setCurrentIndex()`或`setCurrentWidget()`方法来切换显示的窗口:
```cpp
stackedWidget->setCurrentIndex(0);
```
或者
```cpp
stackedWidget->setCurrentWidget(page1);
```
我们还可以使用`count()`方法获取窗口的数量,使用`widget()`方法获取指定索引的窗口。
示例
下面是一个简单的示例,演示如何使用`QStackedWidget`实现窗口的切换显示:
```cpp
#include
int main(int argc
char *argv[])
{
QApplication app(argc
argv);
QWidget mainWindow;
QStackedWidget *stackedWidget = new QStackedWidget(&mainWindow);
QWidget *page1 = new QWidget;
QVBoxLayout *layout1 = new QVBoxLayout(page1);
QLabel *label1 = new QLabel("Page 1");
layout1->addWidget(label1);
QWidget *page2 = new QWidget;
QVBoxLayout *layout2 = new QVBoxLayout(page2);
QLabel *label2 = new QLabel("Page 2");
layout2->addWidget(label2);
stackedWidget->addWidget(page1);
stackedWidget->addWidget(page2);
QPushButton *button1 = new QPushButton("Button 1");
QObject::connect(button1
&QPushButton::clicked
[stackedWidget]() {
stackedWidget->setCurrentIndex(0);
});
QPushButton *button2 = new QPushButton("Button 2");
QObject::connect(button2
&QPushButton::clicked
[stackedWidget]() {
stackedWidget->setCurrentIndex(1);
});
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(button1);
layout->addWidget(button2);
QVBoxLayout *mainLayout = new QVBoxLayout(&mainWindow);
mainLayout->addWidget(stackedWidget);
mainLayout->addLayout(layout);
mainWindow.show();
return app.exec();
}
```
以上示例中,`mainWindow`是主窗口,`stackedWidget`是放置多个窗口的容器。单击按钮1将显示*个窗口,单击按钮2将显示第二个窗口。
总结
`QStackedWidget`是一个非常有用的容器类,可用于将多个窗口部件堆叠在一起,并控制显示哪一个部件。我们可以通过`setCurrentIndex()`或`setCurrentWidget()`方法进行切换。它是构建复杂界面的有力工具,为用户提供了良好的交互体验。