#include "compareitemdetailwidget.h" #include "ui_compareitemdetailwidget.h" #include "UIStyleManager.h" CompareItemDetailWidget::CompareItemDetailWidget(QWidget *parent) : DialogBase(parent), ui(new Ui::CompareItemDetailWidget) { QWidget* contentWidget = new QWidget(this); ui->setupUi(contentWidget); /* 设置内容到弹窗中 */ setContentWidget(contentWidget); /* 设置标题 */ setTitle(tr("对比项详情")); /* 底栏 */ removeBottomWidget(); /* 设置提示文本 */ ui->label_tip->setText("备注: 其他通道都同主通道进行信号对比"); /* 设置QSS */ setQSS(); /* 初始化表格,需要在设置QSS之后再初始化 */ initTable(); } CompareItemDetailWidget::~CompareItemDetailWidget() { delete ui; } /* 设置对比项信息 */ void CompareItemDetailWidget::setCompareItemInfo(const CompareItemInfo_t& info) { /* 设置对比项名称 */ ui->label_compareItemName->setText(info.strName); /* 设置是否启用对比项 */ ui->label_compareItemEnable->setText(info.isEnable ? "启用" : "未启用"); for(const auto& it : info.mapRoad) { /* 添加一行 */ QList items; /* 序号 */ items.append(new QTableWidgetItem(QString::number(it.nCompareRoadNum))); /* 通道 */ QString roadName = it.nCompareRoadNum == 1 ? "主通道" : QString("%1通道").arg(it.nCompareRoadNum); items.append(new QTableWidgetItem(roadName)); /* 通道名称 */ items.append(new QTableWidgetItem(it.strCompareRoadName)); /* 通道声卡设备编号 */ QString soundCardRoad = QString("%1:%2").arg(it.scRoadInfo.strSoundCardName, QString::number(it.scRoadInfo.roadInfo.nRoadNum)); items.append(new QTableWidgetItem(soundCardRoad)); int row = ui->tableWidget->rowCount(); ui->tableWidget->insertRow(row); ui->tableWidget->setItem(row, 0, items[0]); ui->tableWidget->setItem(row, 1, items[1]); ui->tableWidget->setItem(row, 2, items[2]); ui->tableWidget->setItem(row, 3, items[3]); /* 设置表格行高 */ ui->tableWidget->setRowHeight(row, 48); } } /* 设置QSS */ void CompareItemDetailWidget::setQSS() { QString qssPath = UIStyle.getQSSPath() + "/compareitemdetailwidget.qss"; QFile file(qssPath); if(file.open(QFile::ReadOnly)) { QString qss = file.readAll(); getContentWidget()->setStyleSheet(qss); file.close(); }else { SPDLOG_LOGGER_ERROR(m_logger, "Failed to open QSS file: {}", qssPath.toStdString()); } } /* 初始化表格 */ void CompareItemDetailWidget::initTable() { /* 设置表格属性 */ /* 设置单元格不可编辑 */ ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); /* 选择整行 */ ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); /* 单选模式 */ ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); /* 不显示网格线 */ ui->tableWidget->setShowGrid(false); /* 取消选中项的虚线 */ // ui->tableWidget->setAlternatingRowColors(true); /* 禁止显示横向滚动条 */ ui->tableWidget->horizontalHeader()->setStretchLastSection(true); /* 设置最后一列拉伸 */ /* 设置表格头部不可点击 */ ui->tableWidget->horizontalHeader()->setSectionsClickable(false); /* 设置表格头部不可拖动 */ ui->tableWidget->horizontalHeader()->setSectionsMovable(false); /* 设置表格头部不可调整大小 */ ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); /* 设置不显示行表头 */ ui->tableWidget->verticalHeader()->setVisible(false); /* 设置表格高度 */ ui->tableWidget->verticalHeader()->setMinimumHeight(48); /* 设置表格头部高度 */ ui->tableWidget->horizontalHeader()->setMinimumHeight(48); /* 设置表格头部对齐方式 */ ui->tableWidget->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft | Qt::AlignVCenter); /* 设置表格列数 */ ui->tableWidget->setColumnCount(4); /* 添加标题 */ QStringList headers; headers << "序号" << "通道" << "通道名称" << "通道声卡设备编号"; ui->tableWidget->setHorizontalHeaderLabels(headers); /* 设置表格列宽度 */ ui->tableWidget->setColumnWidth(0, 60); /* 序号 */ ui->tableWidget->setColumnWidth(1, 160); /* 通道 */ ui->tableWidget->setColumnWidth(2, 240); /* 通道名称 */ ui->tableWidget->setColumnWidth(3, 240); /* 通道声卡设备编号 */ }