compareitemdetailwidget.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #include "compareitemdetailwidget.h"
  2. #include "ui_compareitemdetailwidget.h"
  3. #include "UIStyleManager.h"
  4. CompareItemDetailWidget::CompareItemDetailWidget(QWidget *parent) :
  5. DialogBase(parent),
  6. ui(new Ui::CompareItemDetailWidget)
  7. {
  8. QWidget* contentWidget = new QWidget(this);
  9. ui->setupUi(contentWidget);
  10. /* 设置内容到弹窗中 */
  11. setContentWidget(contentWidget);
  12. /* 设置标题 */
  13. setTitle(tr("对比项详情"));
  14. /* 底栏 */
  15. removeBottomWidget();
  16. /* 设置提示文本 */
  17. ui->label_tip->setText("备注: 其他通道都同主通道进行信号对比");
  18. /* 设置QSS */
  19. setQSS();
  20. /* 初始化表格,需要在设置QSS之后再初始化 */
  21. initTable();
  22. }
  23. CompareItemDetailWidget::~CompareItemDetailWidget()
  24. {
  25. delete ui;
  26. }
  27. /* 设置对比项信息 */
  28. void CompareItemDetailWidget::setCompareItemInfo(const CompareItemInfo_t& info)
  29. {
  30. /* 设置对比项名称 */
  31. ui->label_compareItemName->setText(info.strName);
  32. /* 设置是否启用对比项 */
  33. ui->label_compareItemEnable->setText(info.isEnable ? "启用" : "未启用");
  34. for(const auto& it : info.mapRoad)
  35. {
  36. /* 添加一行 */
  37. QList<QTableWidgetItem*> items;
  38. /* 序号 */
  39. items.append(new QTableWidgetItem(QString::number(it.nCompareRoadNum)));
  40. /* 通道 */
  41. QString roadName = it.nCompareRoadNum == 1 ? "主通道" : QString("%1通道").arg(it.nCompareRoadNum);
  42. items.append(new QTableWidgetItem(roadName));
  43. /* 通道名称 */
  44. items.append(new QTableWidgetItem(it.strCompareRoadName));
  45. /* 通道声卡设备编号 */
  46. QString soundCardRoad = QString("%1:%2").arg(it.scRoadInfo.strSoundCardName, QString::number(it.scRoadInfo.roadInfo.nRoadNum));
  47. items.append(new QTableWidgetItem(soundCardRoad));
  48. int row = ui->tableWidget->rowCount();
  49. ui->tableWidget->insertRow(row);
  50. ui->tableWidget->setItem(row, 0, items[0]);
  51. ui->tableWidget->setItem(row, 1, items[1]);
  52. ui->tableWidget->setItem(row, 2, items[2]);
  53. ui->tableWidget->setItem(row, 3, items[3]);
  54. /* 设置表格行高 */
  55. ui->tableWidget->setRowHeight(row, 48);
  56. }
  57. }
  58. /* 设置QSS */
  59. void CompareItemDetailWidget::setQSS()
  60. {
  61. QString qssPath = UIStyle.getQSSPath() + "/compareitemdetailwidget.qss";
  62. QFile file(qssPath);
  63. if(file.open(QFile::ReadOnly))
  64. {
  65. QString qss = file.readAll();
  66. getContentWidget()->setStyleSheet(qss);
  67. file.close();
  68. }else {
  69. SPDLOG_LOGGER_ERROR(m_logger, "Failed to open QSS file: {}", qssPath.toStdString());
  70. }
  71. }
  72. /* 初始化表格 */
  73. void CompareItemDetailWidget::initTable()
  74. {
  75. /* 设置表格属性 */
  76. /* 设置单元格不可编辑 */
  77. ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  78. /* 选择整行 */
  79. ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  80. /* 单选模式 */
  81. ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  82. /* 不显示网格线 */
  83. ui->tableWidget->setShowGrid(false);
  84. /* 取消选中项的虚线 */
  85. // ui->tableWidget->setAlternatingRowColors(true);
  86. /* 禁止显示横向滚动条 */
  87. ui->tableWidget->horizontalHeader()->setStretchLastSection(true); /* 设置最后一列拉伸 */
  88. /* 设置表格头部不可点击 */
  89. ui->tableWidget->horizontalHeader()->setSectionsClickable(false);
  90. /* 设置表格头部不可拖动 */
  91. ui->tableWidget->horizontalHeader()->setSectionsMovable(false);
  92. /* 设置表格头部不可调整大小 */
  93. ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
  94. /* 设置不显示行表头 */
  95. ui->tableWidget->verticalHeader()->setVisible(false);
  96. /* 设置表格高度 */
  97. ui->tableWidget->verticalHeader()->setMinimumHeight(48);
  98. /* 设置表格头部高度 */
  99. ui->tableWidget->horizontalHeader()->setMinimumHeight(48);
  100. /* 设置表格头部对齐方式 */
  101. ui->tableWidget->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft | Qt::AlignVCenter);
  102. /* 设置表格列数 */
  103. ui->tableWidget->setColumnCount(4);
  104. /* 添加标题 */
  105. QStringList headers;
  106. headers << "序号" << "通道" << "通道名称" << "通道声卡设备编号";
  107. ui->tableWidget->setHorizontalHeaderLabels(headers);
  108. /* 设置表格列宽度 */
  109. ui->tableWidget->setColumnWidth(0, 60); /* 序号 */
  110. ui->tableWidget->setColumnWidth(1, 160); /* 通道 */
  111. ui->tableWidget->setColumnWidth(2, 240); /* 通道名称 */
  112. ui->tableWidget->setColumnWidth(3, 240); /* 通道声卡设备编号 */
  113. }