QStackedLayout类提供了一种布局方式,使得在同一时间内只有一个子部件(或称为页面)是可见的。这些子部件被维护在一个堆栈中,用户可以通过切换来显示不同的子部件,适合用在需要动态显示不同界面的场景,如向导、设置页面等。
重要方法
- addWidget(QWidget *widget):向堆栈中添加一个新的子控件,并返回该子控件在堆栈中的索引。
- insertWidget(int index, QWidget *widget):在指定的索引位置插入一个新的子控件。
- setCurrentIndex(int index):设置当前可见的子控件索引。
- currentWidget() const:返回当前可见的子控件。
- currentIndex() const:返回当前可见的子控件索引。
- widget(int index) const:返回指定索引位置的子控件。
- count() const:返回堆栈中子控件的数量。
重要信号
- currentChanged(int index):当当前可见的子控件发生变化时,发射此信号。
- widgetRemoved(int index):当堆栈中的某个子控件被移除时,发射此信号。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *widget = new QWidget;
widget->show();
QListWidget* listWidget = new QListWidget(widget);
listWidget->addItem("Home");
listWidget->addItem("Profile");
listWidget->addItem("Settings");
QStackedLayout* stackedLayout = new QStackedLayout;
QLabel* homeLabel = new QLabel("Welcome to the Home Page.", widget);
QLabel* profileLabel = new QLabel("This is your Profile Page.", widget);
QLabel* settingsLabel = new QLabel("Here are your Settings.", widget);
stackedLayout->addWidget(homeLabel);
stackedLayout->addWidget(profileLabel);
stackedLayout->addWidget(settingsLabel);
QObject::connect(listWidget, &QListWidget::currentRowChanged, stackedLayout, &QStackedLayout::setCurrentIndex);
QHBoxLayout* mainLayout = new QHBoxLayout;
mainLayout->addWidget(listWidget);
mainLayout->addLayout(stackedLayout);
widget->setLayout(mainLayout);
return a.exec();
}
觉得有帮助的话,打赏一下呗。。