当前位置:   article > 正文

QT中同界面添加多个组件窗口_stacked widget增加数量

stacked widget增加数量

1、打开Qt Creator,新建一个Qt Widgets Application项目,添加控件Stacked Widget和PushButton,然后再添加3个子窗口类

 

子窗口类可有自己任意定义,创建好后将头文件引入主窗口类,并定义子类的对象为主类私有变量,方便成员函数访问。

  1. MainWindow::MainWindow(QWidget *parent)
  2. : QMainWindow(parent)
  3. , ui(new Ui::MainWindow)
  4. {
  5. ui->setupUi(this);
  6. alarm = new Alarm(this);
  7. cfg = new Config(this);
  8. disk = new Disksystem(this);
  9. //添加生成的子界面
  10. ui->stackedWidget->addWidget(alarm);
  11. ui->stackedWidget->addWidget(cfg);
  12. ui->stackedWidget->addWidget(disk);
  13. ui->stackedWidget->setCurrentWidget(cfg);
  14. }
  15. MainWindow::~MainWindow()
  16. {
  17. delete ui;
  18. }
  19. QString MainWindow::GetQstringInt(QString arg)
  20. {
  21. QString tmp;
  22. for(int j = 0; j < arg.length(); j++)
  23. {
  24. if(arg[j] > '0' && arg[j] < '9')
  25. tmp.append(arg[j]);
  26. }
  27. return tmp;
  28. }
  29. void MainWindow::on_CfgBtn_clicked()
  30. {
  31. ui->stackedWidget->setCurrentWidget(cfg);
  32. index = ui->stackedWidget->currentIndex();
  33. qDebug()<<"index= "<<index;
  34. }
  35. void MainWindow::on_AlarmBtn_clicked()
  36. {
  37. ui->stackedWidget->setCurrentWidget(alarm);
  38. index = ui->stackedWidget->currentIndex();
  39. qDebug()<<"index= "<<index;
  40. }
  41. void MainWindow::on_diskBtn_clicked()
  42. {
  43. ui->stackedWidget->setCurrentWidget(disk);
  44. index = ui->stackedWidget->currentIndex();
  45. qDebug()<<"index= "<<index;
  46. }
  47. void MainWindow::on_lineEdit_textChanged(const QString &arg1)
  48. {
  49. QString s1 = "开始";
  50. qDebug()<<"on_lineEdit_textChanged=="<<arg1;
  51. if(arg1.compare(s1) == 0)
  52. {
  53. ui->stackedWidget->setCurrentIndex(1);
  54. qDebug()<<"setCurrentIndex==1";
  55. return;
  56. }
  57. else {
  58. // i++;
  59. }
  60. }
  61. void MainWindow::on_pushButton_2_clicked()
  62. {
  63. this->close();
  64. }
  65. void MainWindow::on_treeWidget_itemPressed(QTreeWidgetItem *item, int column)
  66. {
  67. QString str = item->text(column);
  68. qDebug()<<"channel num:"<<GetQstringInt(str);
  69. }

新添加的Stacked Widget控件是有两个空白页面可以切换的,页面的索引是从0开始的,也就是说两个空白页面占据了0和1,如果新添加了页面,那就是索引号从2开始。还要注意的是页面有两种切换方式,一种是索引号,另外一种是按窗口名称,窗口名称这种在切换的时候不太好用,会报错,最好还是使用索引号。

  1. //获取页面的数量
  2. int nCount = ui->stackedWidget->count();
  3. //获取当前页面的索引
  4. int nIndex = ui->stackedWidget->currentIndex();
  5. //获取下一个需要显示的页面索引
  6. nIndex++;
  7. //当需要显示的页面索引大于等于总页面时,切换至首页
  8. if (nIndex >= nCount)
  9. {
  10. nIndex = firstIndex;
  11. }
  12. //显示当前页面
  13. ui->stackedWidget->setCurrentIndex(nIndex);

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