`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()`方法进行切换。它是构建复杂界面的有力工具,为用户提供了良好的交互体验。
咨询微信客服
0516-6662 4183
立即获取方案或咨询top