compareitemdetailwidget.cpp 4.7 KB

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