mainwindow.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. };
  11. PageIdentifier stringToPageIdentifier(const QString& item) {
  12. if (item == "page_tcp") {
  13. return pageID_tcp;
  14. } else if (item == "page_set") {
  15. return pageID_set;
  16. } else if (item == "page_main") {
  17. return pageID_main;
  18. } else {
  19. return pageIDUnknown;
  20. }
  21. }
  22. MainWindow::MainWindow(QWidget *parent)
  23. : QMainWindow(parent) // 调用父类的构造函数
  24. , ui(new Ui::MainWindow)
  25. , page_tcp(this, &page_scope) // 初始化 tcp 时传入 MainWindow 和 page_scope
  26. , page_scope(this) // 初始化 scope
  27. , page_set(this) // 初始化 set 时传入 MainWindow 和 page_scope
  28. {
  29. ui->setupUi(this);
  30. ui->btn_set->setToolTip("连接");
  31. QStandardItemModel* model = treeModel.tree_set();
  32. page_set.setTreeModel(&treeModel);
  33. ui->tree_set->setModel(model);
  34. ui->tree_set->expandAll();
  35. connect(ui->tree_set, &QTreeView::clicked, this, &MainWindow::onTreeItemClicked);
  36. connect(&page_set, &set::treeItemClicked, this, &MainWindow::onTreeItemClicked);
  37. connect(&page_scope, &scope::treeItemClicked, this, &MainWindow::onTreeItemClicked);
  38. }
  39. MainWindow::~MainWindow()
  40. {
  41. delete ui;
  42. }
  43. void MainWindow::onTreeItemClicked(const QModelIndex &index)
  44. {
  45. // 显示index数据形式
  46. qDebug() << "Index row:" << index.row(); // 打印行号
  47. qDebug() << "Index column:" << index.column(); // 打印列号
  48. qDebug() << "Index data:" << index.data().toString(); // 打印该项的数据(文本)
  49. // 获取并打印用户定义的标识符
  50. QString item = index.data(Qt::UserRole).toString();
  51. PageIdentifier pageId = stringToPageIdentifier(item);
  52. qDebug() << "index :" <<item;
  53. qDebug() << "Page Identifier:" << pageId; // 打印标识符
  54. switch (pageId) {
  55. case pageID_main:
  56. this->show();
  57. break;
  58. case pageID_tcp:
  59. page_tcp.show(); // 显示 TCP 界面
  60. break;
  61. case pageID_set:
  62. page_set.show(); // 显示 TCP 界面
  63. break;
  64. default:
  65. // 处理其他情况或不作任何操作
  66. break;
  67. }
  68. }
  69. //主体窗口功能
  70. void MainWindow::on_btn_link_clicked()
  71. {
  72. page_tcp.show();
  73. }
  74. void MainWindow::on_btn_scope_clicked()
  75. {
  76. page_scope.show();
  77. }
  78. void MainWindow::on_btn_set_clicked()
  79. {
  80. page_set.show();
  81. }
  82. //快捷按键入口
  83. void MainWindow::on_tbtn_link_clicked()
  84. {
  85. page_tcp.show();
  86. }
  87. void MainWindow::on_tbtn_set_clicked()
  88. {
  89. page_set.show();
  90. }
  91. void MainWindow::on_tbtn_scope_clicked()
  92. {
  93. page_scope.show();
  94. }