QT中mainwindow菜单栏实现点击打开新页面并且保留原页面
时间: 2024-02-20 16:59:40 浏览: 176
要在QT中实现菜单栏点击打开新页面并且保留原页面,可以使用QStackedWidget控件。具体实现步骤如下:
1.在mainwindow中添加QStackedWidget控件,并添加至少两个QWidget页面。
2.在菜单栏中添加相应的Action,设置其triggered信号与槽函数关联。槽函数中,通过QStackedWidget的setCurrentIndex函数可以切换到相应的页面。
3.为了保留原页面,需要在槽函数中将当前QWidget页面压入QStackedWidget的堆栈中。
代码示例:
```
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//添加QWidget页面
QWidget *page1 = new QWidget();
ui->stackedWidget->addWidget(page1);
QWidget *page2 = new QWidget();
ui->stackedWidget->addWidget(page2);
//添加菜单栏Action
QAction *action1 = new QAction("Page 1", this);
connect(action1, &QAction::triggered, this, &MainWindow::showPage1);
ui->menuBar->addAction(action1);
QAction *action2 = new QAction("Page 2", this);
connect(action2, &QAction::triggered, this, &MainWindow::showPage2);
ui->menuBar->addAction(action2);
}
void MainWindow::showPage1()
{
//切换到页面1,并将当前页面压入堆栈中
ui->stackedWidget->addWidget(ui->stackedWidget->currentWidget());
ui->stackedWidget->setCurrentIndex(0);
}
void MainWindow::showPage2()
{
//切换到页面2,并将当前页面压入堆栈中
ui->stackedWidget->addWidget(ui->stackedWidget->currentWidget());
ui->stackedWidget->setCurrentIndex(1);
}
```
阅读全文