compareitemlistdialog.cpp 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. #include "compareitemlistdialog.h"
  2. #include "ui_compareitemlistwidget.h"
  3. #include "compareitemdialog.h"
  4. #include "UIStyleManager.h"
  5. #include <qwidget.h>
  6. /* 重载比较函数 */
  7. bool CSortModel::lessThan(const QModelIndex &left, const QModelIndex &right) const
  8. {
  9. // /* 先比较是正常日还是特殊日 */
  10. // auto leftDay = sourceModel()->data(left, UserRole_WeekDay).toInt();
  11. // auto rightDay = sourceModel()->data(right, UserRole_WeekDay).toInt();
  12. // if(leftDay != rightDay)
  13. // {
  14. // return leftDay < rightDay; /* 比较周几 */
  15. // }
  16. // /* 日期类型相等,再比较时间 */
  17. // auto leftTime = sourceModel()->data(left, UserRole_Time).toDateTime();
  18. // auto rightTime = sourceModel()->data(right, UserRole_Time).toDateTime();
  19. // if(leftDay == static_cast<int>(enum_WeekDay::WeekDay_Special))
  20. // {
  21. // /* 特殊日,比较日期和时间 */
  22. // return leftTime < rightTime;
  23. // }else {
  24. // /* 正常日,只比较时间 */
  25. // return leftTime.time() < rightTime.time();
  26. // }
  27. return true;
  28. }
  29. CompareItemListDialog::CompareItemListDialog(QWidget *parent) :
  30. DialogBase(parent),
  31. ui(new Ui::CompareItemListWidget)
  32. {
  33. QWidget *widgetContent = new QWidget(this);
  34. ui->setupUi(widgetContent);
  35. /* 设置内容 */
  36. setContentWidget(widgetContent);
  37. /* 移除底栏 */
  38. removeBottomWidget();
  39. /* 设置标题 */
  40. setTitle("对比项列表", QSize(120, 18));
  41. UIStyle.registerWidget(widgetContent);
  42. // SPDLOG_LOGGER_DEBUG(m_logger, "ObjectName: {}", widgetContent->objectName().toStdString());
  43. this->resize(1000 + 40, 800 + 40); /* 设置对话框大小,包含阴影的宽度 */
  44. /* 连接信号和槽 */
  45. connect(ui->pBtn_close, &QPushButton::clicked, this, &CompareItemListDialog::do_pBtn_close_Clicked);
  46. connect(ui->pBtn_add, &QPushButton::clicked, this, &CompareItemListDialog::do_pBtn_add_Clicked);
  47. connect(ui->pBtn_delete, &QPushButton::clicked, this, &CompareItemListDialog::do_pBtn_delete_Clicked);
  48. connect(ui->pBtn_modify, &QPushButton::clicked, this, &CompareItemListDialog::do_pBtn_edit_Clicked);
  49. /* 初始化表格 */
  50. initTable();
  51. }
  52. CompareItemListDialog::~CompareItemListDialog()
  53. {
  54. UIStyle.unregisterWidget(getContentWidget());
  55. delete ui;
  56. }
  57. /* 点击了关闭按钮 */
  58. void CompareItemListDialog::do_pBtn_close_Clicked()
  59. {
  60. this->close();
  61. }
  62. /* 点击了添加按钮 */
  63. void CompareItemListDialog::do_pBtn_add_Clicked()
  64. {
  65. CompareItemDialog dlg;
  66. dlg.exec();
  67. }
  68. /* 点击了删除按钮 */
  69. void CompareItemListDialog::do_pBtn_delete_Clicked()
  70. {
  71. }
  72. /* 点击了编辑按钮 */
  73. void CompareItemListDialog::do_pBtn_edit_Clicked()
  74. {
  75. }
  76. /* 初始化表格 */
  77. void CompareItemListDialog::initTable()
  78. {
  79. /* 初始化视图模型 */
  80. m_model = new QStandardItemModel(this);
  81. m_model->setColumnCount(5);
  82. /* 设置每一列的标题 */
  83. m_model->setHeaderData(0, Qt::Horizontal, "序号");
  84. m_model->setHeaderData(1, Qt::Horizontal, "状态");
  85. m_model->setHeaderData(2, Qt::Horizontal, "对比项");
  86. m_model->setHeaderData(3, Qt::Horizontal, "通道数");
  87. m_model->setHeaderData(4, Qt::Horizontal, "操作");
  88. // m_model->clear();
  89. // m_sortModel = new CSortModel(this);
  90. // m_sortModel->setSourceModel(m_model);
  91. // m_sortModel->sort(0, Qt::AscendingOrder); /* 默认升序 */
  92. /* 设置排序数据 */
  93. // m_sortModel->setSortRole(QtUserRole::UserRole_Time); /* 设置排序角色 */
  94. ui->tableView->setModel(m_model);
  95. // 设置选择模式为整行选择
  96. ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
  97. ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
  98. /*--------------------------- 设置横向标题 -------------------------------*/
  99. /* 设置横向标题可见 */
  100. ui->tableView->horizontalHeader()->setVisible(true);
  101. /* 设置标题左对齐 */
  102. ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft | Qt::AlignVCenter);
  103. /* 设置横向标题不可点击 */
  104. ui->tableView->horizontalHeader()->setSectionsClickable(false);
  105. /*--------------------------- 设置列 -------------------------------*/
  106. /* 设置每列的高度 */
  107. ui->tableView->verticalHeader()->setDefaultSectionSize(48);
  108. /* 设置横向表头高度为48像素(可根据需要调整) */
  109. ui->tableView->horizontalHeader()->setFixedHeight(48);
  110. /* 设置列宽度固定 */
  111. ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
  112. /* 去掉列标题 */
  113. ui->tableView->verticalHeader()->setVisible(false);
  114. /* 去掉网格线 */
  115. ui->tableView->setShowGrid(false);
  116. /* 设置单元格不可编辑 */
  117. ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
  118. /* 禁止显示横向滚动条 */
  119. // ui->tableView->horizontalHeader()->setStretchLastSection(true); /* 设置最后一列拉伸 */
  120. /* 设置固定列宽度 */
  121. ui->tableView->setColumnWidth(0, 160); /* 第一列宽度 */
  122. ui->tableView->setColumnWidth(1, 160); /* 第二列宽度 */
  123. ui->tableView->setColumnWidth(2, 240); /* 第三列宽度 */
  124. ui->tableView->setColumnWidth(3, 280); /* 第四列宽度 */
  125. ui->tableView->setColumnWidth(4, 96); /* 第五列宽度 */
  126. /* 测试用,加入两列数据 */
  127. for(int i = 0; i < 10; ++i)
  128. {
  129. CompareItemTableItem_t item;
  130. item.nSerialNum = i + 1; /* 序号 */
  131. item.nID = i + 1000; /* 对比项ID */
  132. item.strName = QString("对比项%1").arg(i + 1); /* 对比项名称 */
  133. item.isEnable = (i % 2 == 0); /* 偶数启用,奇数未启用 */
  134. item.nChannelCount = i + 1; /* 通道数 */
  135. addRow(item);
  136. }
  137. }
  138. /* 添加一行 */
  139. void CompareItemListDialog::addRow(CompareItemTableItem_t item)
  140. {
  141. QList<QStandardItem*> items;
  142. /* 序号 */
  143. QStandardItem* item1 = new QStandardItem(QString::number(item.nSerialNum));
  144. item1->setCheckable(true);
  145. item1->setCheckState(Qt::Unchecked);
  146. items.append(item1);
  147. /* 状态 */
  148. QString status = item.isEnable ? "启用" : "未启用";
  149. items.append(new QStandardItem(status));
  150. /* 对比项 */
  151. items.append(new QStandardItem(item.strName));
  152. /* 通道数 */
  153. items.append(new QStandardItem(QString::number(item.nChannelCount)));
  154. /* 操作 */
  155. items.append(new QStandardItem("详情"));
  156. m_model->appendRow(items);
  157. }