JIoMapPage.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. #ifndef JIOMAPPAGE_H
  2. #define JIOMAPPAGE_H
  3. #include "JCustomLabelControls.h"
  4. struct ST_DEFAULT_VAL
  5. {
  6. QString fieldDefult;
  7. QLineEdit* lineEdit;
  8. int privilege;
  9. int fieldUserGrade;
  10. };
  11. class JIoMapPage :public QObject
  12. {
  13. Q_OBJECT
  14. public:
  15. JIoMapPage();
  16. /**io 界面,先获取全部,后续可用,没用到的后续修改
  17. */
  18. static QWidget* CreateIoPage(const CONFIG_BASE_STRUCT& control);
  19. /**轴测试页面
  20. */
  21. static QWidget* CreateAxisTestPage(const CONFIG_BASE_STRUCT& control);
  22. static void JCreateMenu(QWidget* pWidget);
  23. static void JCreateMenu(QWidget* pWidget, ST_DEFAULT_VAL defaultVal);
  24. /**恢复默认值
  25. */
  26. template <typename Func1>
  27. static void JCreateMenuReDefault(QWidget* pWidget, Func1 fun)
  28. {
  29. pWidget->setContextMenuPolicy(Qt::CustomContextMenu);
  30. connect(pWidget, &QWidget::customContextMenuRequested, [=](const QPoint& pos)
  31. {
  32. QMenu menu;
  33. QAction* pDefValUpAct = menu.addAction(tr("default value", "默认值"));
  34. connect(pDefValUpAct, &QAction::triggered, fun);
  35. menu.exec(pWidget->mapToGlobal(pos));
  36. });
  37. }
  38. /**获取,设置,默认值
  39. * 多种样式菜单
  40. */
  41. template <typename Func1, typename Func2, typename Func3>
  42. static void JCreateMenuVarious(QWidget* pWidget, Func1 TGet, Func2 TSetUp, Func3 TDef)
  43. {
  44. pWidget->setContextMenuPolicy(Qt::CustomContextMenu);
  45. connect(pWidget, &QWidget::customContextMenuRequested, [=](const QPoint& pos)
  46. {
  47. QMenu menu;
  48. QAction* pGet = menu.addAction(tr("Get", "获取"));
  49. connect(pGet, &QAction::triggered, TGet);
  50. QAction* pSetUp = menu.addAction(tr("Set up", "设置"));
  51. connect(pSetUp, &QAction::triggered, TSetUp);
  52. QAction* pDefValUpAct = menu.addAction(tr("default value", "默认值"));
  53. connect(pDefValUpAct, &QAction::triggered, TDef);
  54. menu.exec(pWidget->mapToGlobal(pos));
  55. });
  56. }
  57. /**创建第一行名称
  58. */
  59. static QLabel* JCreateName0(const QString& fieldDescribe, const QString& fieldDescribe_Eng, int nlanguage);
  60. static AutoResizeLabel* JCreateJText(const QString& name);
  61. /**解析json
  62. */
  63. static QList<ST_DATA_ITEM> parseJsonToDataList(const QString& jsonString);
  64. };
  65. // 以下废弃了
  66. #include <QApplication>
  67. #include <QTableWidget>
  68. #include <QHeaderView>
  69. #include <QVBoxLayout>
  70. #include <QPushButton>
  71. #include <QWidget>
  72. #include <QMessageBox>
  73. class GPITableWidget : public QWidget {
  74. Q_OBJECT
  75. public:
  76. GPITableWidget(QWidget* parent = nullptr) : QWidget(parent) {
  77. // 创建主布局
  78. QVBoxLayout* mainLayout = new QVBoxLayout(this);
  79. // 创建表格控件
  80. tableWidget = new QTableWidget(this);
  81. // 设置表格属性
  82. tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  83. tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  84. tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed);
  85. // 设置表头
  86. QStringList headers;
  87. headers << "GPI名称" << "卡号" << "卡类型" << "GPI号" << "有效电平" << "状态";
  88. tableWidget->setColumnCount(headers.size());
  89. tableWidget->setHorizontalHeaderLabels(headers);
  90. // 设置表头自适应
  91. tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  92. // 添加按钮
  93. QPushButton* addButton = new QPushButton("添加行", this);
  94. QPushButton* deleteButton = new QPushButton("删除行", this);
  95. QPushButton* saveButton = new QPushButton("保存数据", this);
  96. // 按钮布局
  97. QHBoxLayout* buttonLayout = new QHBoxLayout();
  98. buttonLayout->addWidget(addButton);
  99. buttonLayout->addWidget(deleteButton);
  100. buttonLayout->addWidget(saveButton);
  101. // 添加到主布局
  102. mainLayout->addWidget(tableWidget);
  103. mainLayout->addLayout(buttonLayout);
  104. // 连接信号槽
  105. connect(addButton, &QPushButton::clicked, this, &GPITableWidget::addRow);
  106. connect(deleteButton, &QPushButton::clicked, this, &GPITableWidget::deleteRow);
  107. connect(saveButton, &QPushButton::clicked, this, &GPITableWidget::saveData);
  108. // 添加初始行
  109. addRow();
  110. }
  111. private slots:
  112. void addRow() {
  113. int row = tableWidget->rowCount();
  114. tableWidget->insertRow(row);
  115. // 为每一列创建项目
  116. tableWidget->setItem(row, 0, new QTableWidgetItem("GPI_" + QString::number(row + 1)));
  117. tableWidget->setItem(row, 1, new QTableWidgetItem(QString::number(row + 1)));
  118. tableWidget->setItem(row, 2, new QTableWidgetItem("类型" + QString::number((row % 3) + 1)));
  119. tableWidget->setItem(row, 3, new QTableWidgetItem(QString::number(row + 101)));
  120. tableWidget->setItem(row, 4, new QTableWidgetItem(row % 2 ? "高电平" : "低电平"));
  121. tableWidget->setItem(row, 5, new QTableWidgetItem("未激活"));
  122. }
  123. void deleteRow() {
  124. int currentRow = tableWidget->currentRow();
  125. if (currentRow >= 0) {
  126. tableWidget->removeRow(currentRow);
  127. }
  128. else {
  129. QMessageBox::warning(this, "警告", "请先选择要删除的行");
  130. }
  131. }
  132. void saveData() {
  133. QString data;
  134. for (int row = 0; row < tableWidget->rowCount(); ++row) {
  135. for (int col = 0; col < tableWidget->columnCount(); ++col) {
  136. QTableWidgetItem* item = tableWidget->item(row, col);
  137. if (item) {
  138. data += item->text() + "\t";
  139. }
  140. }
  141. data += "\n";
  142. }
  143. QMessageBox::information(this, "表格数据", "保存的数据:\n" + data);
  144. // 实际应用中,这里可以将数据保存到文件或数据库
  145. }
  146. private:
  147. QTableWidget* tableWidget;
  148. };
  149. #endif // JIOMAPPAGE_H