赞
踩
stackedWidget可以用来切换各个页面。
一、布局
1.主界面中拖入stackedWidget,并右边属性中插入页进行制作页面。设置三个按钮用于对应切换到子页面。以及返回按钮(toolbuton)用来返回
2.mainwindow.h
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
-
- #include <QMainWindow>
- #include<QStack>
- #include<page1.h>
-
- namespace Ui {
- class MainWindow;
- }
-
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
-
- public:
- explicit MainWindow(QWidget *parent = 0);
- ~MainWindow();
-
- private slots:
-
- void init();
-
- void on_nextPage_clicked();
-
- void on_goback_clicked();
-
- void gotoPage(QString page);
-
- void on_btn1_clicked();
- void on_btn2_clicked();
- void on_btn3_clicked();
-
- public:
- page1 *page111 = nullptr;
-
- private:
- Ui::MainWindow *ui;
-
- QStack<int> pageIndexStack; //切换页面时,用来此时的页面id
- };
-
- #endif // MAINWINDOW_H
3. mainwindow.cpp
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include<QDebug>
- #include<QString>
- #include<page1.h>
-
- //导航栏
- QString shouyeName = "xxx系统";
- int shouyeIndex = 0;
- QString page1Name = "xx功能1";
- int page1Index = 1;
- QString page2Name = "xx功能2";
- int page2Index = 2;
- QString page3Name = "xx功能3";
- int page3Index = 3;
- QString page4Name = "xx功能4";
- int page4Index = 4;
-
- QMap<QString,int> map;//用于页面id与导航栏文字配对
-
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- init();
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
-
- void MainWindow::init(){
- // 显示首页信息
- /*法二:不从ui处添加页面,通过代码添加*/
- page111 = new page1();
- int index= ui->stackedWidget->count();//子页面数量
- ui->stackedWidget->insertWidget(index,page111); //新插入子页面page1
- ui->stackedWidget->setCurrentIndex(shouyeIndex);
- ui->stackedWidget->update();//更新stackwidget 则可将page111嵌入其中
- map.insert(shouyeName,shouyeIndex);
- map.insert(page1Name,page1Index);
- map.insert(page2Name,page2Index);
- map.insert(page3Name,page3Index);
- map.insert(page4Name,page4Index);
- }
-
-
- void MainWindow::on_nextPage_clicked()
- {
- int index= ui->stackedWidget->currentIndex();
- if(index==4){
- index=shouyeIndex;
- }else{
- index+=1;
- }
- QString biaoti = map.key(index);
- ui->biaoti->setText(biaoti);
- ui->daohangname->setText(biaoti);
- ui->stackedWidget->setCurrentIndex(index);
- }
-
- void MainWindow::on_goback_clicked()
- {
- if(pageIndexStack.empty()) {
- qDebug()<<"栈空啦!没有可返回页了!";
- return;
- }else{
- // 显示原来的页面
- auto index = pageIndexStack.pop();
- ui->stackedWidget->setCurrentIndex(index);
- }
- }
-
- void MainWindow::gotoPage(QString page)
- {
- // 保存原来的页面
- auto tmp = ui->stackedWidget->currentIndex();
- pageIndexStack.push(tmp);
-
- // 显示最新的页面
- auto index = map.value(page);
- ui->stackedWidget->setCurrentIndex(index);
- }
-
- void MainWindow::on_btn1_clicked()
- {
- gotoPage("xx功能1");
- }
- void MainWindow::on_btn2_clicked()
- {
- gotoPage("xx功能2");
- }
- void MainWindow::on_btn3_clicked()
- {
- gotoPage("xx功能3");
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。