qt 多界面相互切换
时间: 2023-07-28 15:23:51 浏览: 351
在Qt中实现多界面相互切换可以使用QStackedWidget控件。QStackedWidget是一个容器控件,可以在里面添加多个QWidget对象,每次只显示其中一个QWidget对象,其他QWidget对象都被隐藏。通过QStackedWidget的setCurrentIndex()函数可以切换到指定的QWidget对象。
以下是一个简单的示例代码,展示如何在Qt中使用QStackedWidget实现多界面相互切换:
```c++
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QStackedWidget stackedWidget;
QWidget *page1 = new QWidget;
QLabel *label1 = new QLabel("Page 1");
QVBoxLayout *layout1 = new QVBoxLayout;
layout1->addWidget(label1);
page1->setLayout(layout1);
QWidget *page2 = new QWidget;
QLabel *label2 = new QLabel("Page 2");
QVBoxLayout *layout2 = new QVBoxLayout;
layout2->addWidget(label2);
page2->setLayout(layout2);
stackedWidget.addWidget(page1);
stackedWidget.addWidget(page2);
QPushButton *button1 = new QPushButton("Page 1");
QPushButton *button2 = new QPushButton("Page 2");
QHBoxLayout *hLayout = new QHBoxLayout;
hLayout->addWidget(button1);
hLayout->addWidget(button2);
QVBoxLayout *vLayout = new QVBoxLayout;
vLayout->addLayout(hLayout);
vLayout->addWidget(&stackedWidget);
QWidget window;
window.setLayout(vLayout);
window.show();
QObject::connect(button1, &QPushButton::clicked, &stackedWidget, [=]() {
stackedWidget.setCurrentIndex(0);
});
QObject::connect(button2, &QPushButton::clicked, &stackedWidget, [=]() {
stackedWidget.setCurrentIndex(1);
});
return app.exec();
}
```
在这个示例中,我们使用了QStackedWidget控件,并在其中添加了两个QWidget对象。然后我们创建了两个QPushButton按钮,用于切换到不同的QWidget对象。在按钮的clicked信号中,我们通过setCurrentIndex()函数切换到指定的QWidget对象。
注意:为了保证切换时的流畅度,建议在添加QWidget对象时,设置其布局管理器,以便更好地控制QWidget的大小和位置。
阅读全文