当前位置:   article > 正文

QT学习09:stackedWidget----多页面切换_stackedwidget页面切换

stackedwidget页面切换
stackedWidget可以用来切换各个页面。

一、布局

1.主界面中拖入stackedWidget,并右边属性中插入页进行制作页面。设置三个按钮用于对应切换到子页面。以及返回按钮(toolbuton)用来返回

2.mainwindow.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include<QStack>
  5. #include<page1.h>
  6. namespace Ui {
  7. class MainWindow;
  8. }
  9. class MainWindow : public QMainWindow
  10. {
  11. Q_OBJECT
  12. public:
  13. explicit MainWindow(QWidget *parent = 0);
  14. ~MainWindow();
  15. private slots:
  16. void init();
  17. void on_nextPage_clicked();
  18. void on_goback_clicked();
  19. void gotoPage(QString page);
  20. void on_btn1_clicked();
  21. void on_btn2_clicked();
  22. void on_btn3_clicked();
  23. public:
  24. page1 *page111 = nullptr;
  25. private:
  26. Ui::MainWindow *ui;
  27. QStack<int> pageIndexStack; //切换页面时,用来此时的页面id
  28. };
  29. #endif // MAINWINDOW_H

3. mainwindow.cpp

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include<QDebug>
  4. #include<QString>
  5. #include<page1.h>
  6. //导航栏
  7. QString shouyeName = "xxx系统";
  8. int shouyeIndex = 0;
  9. QString page1Name = "xx功能1";
  10. int page1Index = 1;
  11. QString page2Name = "xx功能2";
  12. int page2Index = 2;
  13. QString page3Name = "xx功能3";
  14. int page3Index = 3;
  15. QString page4Name = "xx功能4";
  16. int page4Index = 4;
  17. QMap<QString,int> map;//用于页面id与导航栏文字配对
  18. MainWindow::MainWindow(QWidget *parent) :
  19. QMainWindow(parent),
  20. ui(new Ui::MainWindow)
  21. {
  22. ui->setupUi(this);
  23. init();
  24. }
  25. MainWindow::~MainWindow()
  26. {
  27. delete ui;
  28. }
  29. void MainWindow::init(){
  30. // 显示首页信息
  31. /*法二:不从ui处添加页面,通过代码添加*/
  32. page111 = new page1();
  33. int index= ui->stackedWidget->count();//子页面数量
  34. ui->stackedWidget->insertWidget(index,page111); //新插入子页面page1
  35. ui->stackedWidget->setCurrentIndex(shouyeIndex);
  36. ui->stackedWidget->update();//更新stackwidget 则可将page111嵌入其中
  37. map.insert(shouyeName,shouyeIndex);
  38. map.insert(page1Name,page1Index);
  39. map.insert(page2Name,page2Index);
  40. map.insert(page3Name,page3Index);
  41. map.insert(page4Name,page4Index);
  42. }
  43. void MainWindow::on_nextPage_clicked()
  44. {
  45. int index= ui->stackedWidget->currentIndex();
  46. if(index==4){
  47. index=shouyeIndex;
  48. }else{
  49. index+=1;
  50. }
  51. QString biaoti = map.key(index);
  52. ui->biaoti->setText(biaoti);
  53. ui->daohangname->setText(biaoti);
  54. ui->stackedWidget->setCurrentIndex(index);
  55. }
  56. void MainWindow::on_goback_clicked()
  57. {
  58. if(pageIndexStack.empty()) {
  59. qDebug()<<"栈空啦!没有可返回页了!";
  60. return;
  61. }else{
  62. // 显示原来的页面
  63. auto index = pageIndexStack.pop();
  64. ui->stackedWidget->setCurrentIndex(index);
  65. }
  66. }
  67. void MainWindow::gotoPage(QString page)
  68. {
  69. // 保存原来的页面
  70. auto tmp = ui->stackedWidget->currentIndex();
  71. pageIndexStack.push(tmp);
  72. // 显示最新的页面
  73. auto index = map.value(page);
  74. ui->stackedWidget->setCurrentIndex(index);
  75. }
  76. void MainWindow::on_btn1_clicked()
  77. {
  78. gotoPage("xx功能1");
  79. }
  80. void MainWindow::on_btn2_clicked()
  81. {
  82. gotoPage("xx功能2");
  83. }
  84. void MainWindow::on_btn3_clicked()
  85. {
  86. gotoPage("xx功能3");
  87. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/457729
推荐阅读
相关标签
  

闽ICP备14008679号