mainwindow.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QTreeView>
  4. #include <QDebug>
  5. enum PageIdentifier {//下方函数记得添加识别界面
  6. pageIDUnknown = 0, // 未知页面
  7. pageID_tcp, // TCP 界面
  8. pageID_set, // 其他界面(你可以根据需要添加更多枚举值)
  9. pageID_main,
  10. pageID_chart,
  11. pageID_model
  12. };
  13. PageIdentifier stringToPageIdentifier(const QString& item) {
  14. if (item == "page_tcp") {
  15. return pageID_tcp;
  16. } else if (item == "page_set") {
  17. return pageID_set;
  18. } else if (item == "page_main") {
  19. return pageID_main;
  20. } else if (item == "page_chart") {
  21. return pageID_chart;
  22. } else if (item == "page_model") {
  23. return pageID_model;
  24. } else {
  25. return pageIDUnknown;
  26. }
  27. }
  28. void MainWindow::tree_connect()//信号初始化
  29. {
  30. connect(ui->tree_set, &QTreeView::clicked, this, &MainWindow::onTreeItemClicked);
  31. connect(&page_set, &set::treeItemClicked, this, &MainWindow::onTreeItemClicked);
  32. connect(&page_scope, &scope::treeItemClicked, this, &MainWindow::onTreeItemClicked);
  33. connect(&page_chart, &chart_file::treeItemClicked, this, &MainWindow::onTreeItemClicked);
  34. connect(&page_model, &model_select::treeItemClicked, this, &MainWindow::onTreeItemClicked);
  35. }
  36. MainWindow::MainWindow(QWidget *parent)
  37. : QMainWindow(parent) // 调用父类的构造函数
  38. , ui(new Ui::MainWindow)
  39. , page_tcp(this, &page_scope) // 初始化 tcp 时传入 MainWindow 和 page_scope
  40. , page_scope(this) // 初始化 scope
  41. , page_set(this) // 初始化 set 时传入 MainWindow 和 page_scope
  42. {
  43. ui->setupUi(this);
  44. ui->btn_set->setToolTip("连接");
  45. QStandardItemModel* model = treeModel.tree_set();
  46. page_set.setTreeModel(&treeModel);
  47. ui->tree_set->setModel(model);
  48. ui->tree_set->expandAll();
  49. tree_connect();
  50. }
  51. MainWindow::~MainWindow()
  52. {
  53. delete ui;
  54. }
  55. void MainWindow::onTreeItemClicked(const QModelIndex &index)
  56. {
  57. // 显示index数据形式
  58. qDebug() << "Index row:" << index.row(); // 打印行号
  59. qDebug() << "Index column:" << index.column(); // 打印列号
  60. qDebug() << "Index data:" << index.data().toString(); // 打印该项的数据(文本)
  61. // 获取并打印用户定义的标识符
  62. QString item = index.data(Qt::UserRole).toString();
  63. PageIdentifier pageId = stringToPageIdentifier(item);
  64. qDebug() << "index :" <<item;
  65. qDebug() << "Page Identifier:" << pageId; // 打印标识符
  66. switch (pageId) {
  67. case pageID_main:
  68. this->showMaximized();
  69. break;
  70. case pageID_tcp:
  71. page_tcp.showMaximized(); // 显示 TCP 界面
  72. this->hide();
  73. break;
  74. case pageID_set:
  75. page_set.showMaximized(); // 显示 set 界面
  76. this->hide();
  77. break;
  78. case pageID_chart:
  79. page_chart.setPointsNum(2);
  80. page_chart.showMaximized(); // 显示 chart 界面
  81. this->hide();
  82. break;
  83. case pageID_model:
  84. page_model.showMaximized(); // 显示 model_select 界面
  85. this->hide();
  86. break;
  87. default:
  88. // 处理其他情况或不作任何操作
  89. break;
  90. }
  91. }
  92. //主体窗口功能
  93. void MainWindow::on_btn_link_clicked()
  94. {
  95. page_tcp.showMaximized();
  96. //隐藏当前窗口
  97. this->hide();
  98. }
  99. void MainWindow::on_btn_scope_clicked()
  100. {
  101. page_scope.showMaximized();
  102. }
  103. void MainWindow::on_btn_set_clicked()
  104. {
  105. page_model.showMaximized(); // 显示 model_select 界面
  106. this->hide();
  107. }
  108. //快捷按键入口
  109. void MainWindow::on_tbtn_link_clicked()
  110. {
  111. page_tcp.showMaximized();
  112. //隐藏当前窗口
  113. this->hide();
  114. }
  115. void MainWindow::on_tbtn_set_clicked()
  116. {
  117. page_set.showMaximized();
  118. this->hide();
  119. }
  120. void MainWindow::on_tbtn_scope_clicked()
  121. {
  122. page_scope.showMaximized();
  123. this->hide();
  124. }