QTmaindow实现点击菜单跳转新页面
时间: 2023-12-28 17:05:36 浏览: 116
在 Qt 中,可以使用 QStackedWidget 来实现多页面的切换。具体步骤如下:
1. 在 Qt Designer 中,将主窗口中的中心部件设置为 QStackedWidget。
2. 在 QStackedWidget 中添加需要的页面,每个页面可以使用 QWidget 或 QDialog 来实现。
3. 在主窗口中添加菜单栏,添加菜单和菜单项。
4. 连接菜单项的 triggered 信号到相应的槽函数中,在槽函数中切换 QStackedWidget 中的页面。
下面是一个简单的示例代码:
```
// MainWindow.h
#include <QMainWindow>
#include <QStackedWidget>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
private slots:
void showPage1();
void showPage2();
void showPage3();
private:
QStackedWidget *stackedWidget;
};
// MainWindow.cpp
#include "MainWindow.h"
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 创建 QStackedWidget
stackedWidget = new QStackedWidget(this);
setCentralWidget(stackedWidget);
// 创建页面 1
QWidget *page1 = new QWidget(this);
QVBoxLayout *layout1 = new QVBoxLayout(page1);
QPushButton *button1 = new QPushButton("Go to Page 2", page1);
layout1->addWidget(button1);
connect(button1, &QPushButton::clicked, this, &MainWindow::showPage2);
stackedWidget->addWidget(page1);
// 创建页面 2
QWidget *page2 = new QWidget(this);
QVBoxLayout *layout2 = new QVBoxLayout(page2);
QPushButton *button2 = new QPushButton("Go to Page 3", page2);
layout2->addWidget(button2);
connect(button2, &QPushButton::clicked, this, &MainWindow::showPage3);
stackedWidget->addWidget(page2);
// 创建页面 3
QWidget *page3 = new QWidget(this);
QVBoxLayout *layout3 = new QVBoxLayout(page3);
QPushButton *button3 = new QPushButton("Go to Page 1", page3);
layout3->addWidget(button3);
connect(button3, &QPushButton::clicked, this, &MainWindow::showPage1);
stackedWidget->addWidget(page3);
// 创建菜单栏
QMenuBar *menuBar = new QMenuBar(this);
setMenuBar(menuBar);
QMenu *menu = new QMenu("Menu", this);
menuBar->addMenu(menu);
QAction *action1 = new QAction("Page 1", this);
QAction *action2 = new QAction("Page 2", this);
QAction *action3 = new QAction("Page 3", this);
menu->addAction(action1);
menu->addAction(action2);
menu->addAction(action3);
connect(action1, &QAction::triggered, this, &MainWindow::showPage1);
connect(action2, &QAction::triggered, this, &MainWindow::showPage2);
connect(action3, &QAction::triggered, this, &MainWindow::showPage3);
}
void MainWindow::showPage1()
{
stackedWidget->setCurrentIndex(0);
}
void MainWindow::showPage2()
{
stackedWidget->setCurrentIndex(1);
}
void MainWindow::showPage3()
{
stackedWidget->setCurrentIndex(2);
}
```
在这个示例中,我们创建了三个页面,每个页面都包含一个 QPushButton,点击按钮可以切换到其他页面。同时,我们在菜单栏中添加了三个菜单项,点击菜单项也可以切换页面。在槽函数中,我们使用 setCurrentIndex 函数来切换页面。
阅读全文