JIoMapPage.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #ifndef JIOMAPPAGE_H
  2. #define JIOMAPPAGE_H
  3. class JIoMapPage
  4. {
  5. public:
  6. JIoMapPage();
  7. };
  8. #include <QApplication>
  9. #include <QTableWidget>
  10. #include <QHeaderView>
  11. #include <QVBoxLayout>
  12. #include <QPushButton>
  13. #include <QWidget>
  14. #include <QMessageBox>
  15. class GPITableWidget : public QWidget {
  16. Q_OBJECT
  17. public:
  18. GPITableWidget(QWidget* parent = nullptr) : QWidget(parent) {
  19. // 创建主布局
  20. QVBoxLayout* mainLayout = new QVBoxLayout(this);
  21. // 创建表格控件
  22. tableWidget = new QTableWidget(this);
  23. // 设置表格属性
  24. tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  25. tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  26. tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed);
  27. // 设置表头
  28. QStringList headers;
  29. headers << "GPI名称" << "卡号" << "卡类型" << "GPI号" << "有效电平" << "状态";
  30. tableWidget->setColumnCount(headers.size());
  31. tableWidget->setHorizontalHeaderLabels(headers);
  32. // 设置表头自适应
  33. tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  34. // 添加按钮
  35. QPushButton* addButton = new QPushButton("添加行", this);
  36. QPushButton* deleteButton = new QPushButton("删除行", this);
  37. QPushButton* saveButton = new QPushButton("保存数据", this);
  38. // 按钮布局
  39. QHBoxLayout* buttonLayout = new QHBoxLayout();
  40. buttonLayout->addWidget(addButton);
  41. buttonLayout->addWidget(deleteButton);
  42. buttonLayout->addWidget(saveButton);
  43. // 添加到主布局
  44. mainLayout->addWidget(tableWidget);
  45. mainLayout->addLayout(buttonLayout);
  46. // 连接信号槽
  47. connect(addButton, &QPushButton::clicked, this, &GPITableWidget::addRow);
  48. connect(deleteButton, &QPushButton::clicked, this, &GPITableWidget::deleteRow);
  49. connect(saveButton, &QPushButton::clicked, this, &GPITableWidget::saveData);
  50. // 添加初始行
  51. addRow();
  52. }
  53. private slots:
  54. void addRow() {
  55. int row = tableWidget->rowCount();
  56. tableWidget->insertRow(row);
  57. // 为每一列创建项目
  58. tableWidget->setItem(row, 0, new QTableWidgetItem("GPI_" + QString::number(row + 1)));
  59. tableWidget->setItem(row, 1, new QTableWidgetItem(QString::number(row + 1)));
  60. tableWidget->setItem(row, 2, new QTableWidgetItem("类型" + QString::number((row % 3) + 1)));
  61. tableWidget->setItem(row, 3, new QTableWidgetItem(QString::number(row + 101)));
  62. tableWidget->setItem(row, 4, new QTableWidgetItem(row % 2 ? "高电平" : "低电平"));
  63. tableWidget->setItem(row, 5, new QTableWidgetItem("未激活"));
  64. }
  65. void deleteRow() {
  66. int currentRow = tableWidget->currentRow();
  67. if (currentRow >= 0) {
  68. tableWidget->removeRow(currentRow);
  69. }
  70. else {
  71. QMessageBox::warning(this, "警告", "请先选择要删除的行");
  72. }
  73. }
  74. void saveData() {
  75. QString data;
  76. for (int row = 0; row < tableWidget->rowCount(); ++row) {
  77. for (int col = 0; col < tableWidget->columnCount(); ++col) {
  78. QTableWidgetItem* item = tableWidget->item(row, col);
  79. if (item) {
  80. data += item->text() + "\t";
  81. }
  82. }
  83. data += "\n";
  84. }
  85. QMessageBox::information(this, "表格数据", "保存的数据:\n" + data);
  86. // 实际应用中,这里可以将数据保存到文件或数据库
  87. }
  88. private:
  89. QTableWidget* tableWidget;
  90. };
  91. #endif // JIOMAPPAGE_H