#include "singlecompareroadwidget.h" #include "ui_singlecompareroadwidget.h" #include "customcombobox.h" #include "spdlog/spdlog.h" SingleCompareRoadWidget::SingleCompareRoadWidget(QWidget *parent) : QWidget(parent) , ui(new Ui::SingleCompareRoadWidget) , m_nIndex(0) { ui->setupUi(this); /* 设置comboBox阴影 */ // ui->comboBox_soundCardNum->setViewShadowEffect(); connect(ui->btnDel, &QPushButton::clicked, this, [this]{emit deleted(m_nIndex);}); } SingleCompareRoadWidget::~SingleCompareRoadWidget() { delete ui; } bool SingleCompareRoadWidget::isDelBtnVisible() const { return ui->btnDel->isVisible(); } void SingleCompareRoadWidget::setDelBtnVisible(bool bVisible) { ui->btnDel->setVisible(bVisible); } /* 设置声卡通道列表 */ void SingleCompareRoadWidget::setSoundCardRoadList(const SoundCardInfo_t& soundCard) { m_soundCardInfo = soundCard; ui->comboBox_soundCardNum->clear(); for(const auto& it : m_soundCardInfo.listRoad) { QString strRoadName = QString("%1:%2").arg(m_soundCardInfo.strSoundCardName).arg(it.nRoadNum); ui->comboBox_soundCardNum->addItem(strRoadName, QVariant::fromValue(it.nRoadNum)); } /* 默认选择第一个 */ ui->comboBox_soundCardNum->setCurrentIndex(0); } /* 设置默认参数,设置之前需要先设置完成声卡可选通道列表 */ void SingleCompareRoadWidget::setDefaultParams(const CompareItemRoadInfo_t& roadInfo) { ui->lineEditRoadName->setText(roadInfo.strCompareRoadName); ui->checkBox->setChecked(roadInfo.isEnableRecord); // setIndex(roadInfo.nCompareRoadNum); /* 通道编号不需要设置 */ /* 先清空选择,再设置当前选项 */ // ui->comboBox_soundCardNum->setCurrentIndex(-1); int numIndex = ui->comboBox_soundCardNum->findData(roadInfo.scRoadInfo.roadInfo.nRoadNum); if(numIndex != -1) { ui->comboBox_soundCardNum->setCurrentIndex(numIndex); } else { ui->comboBox_soundCardNum->setCurrentIndex(0); // 如果没有找到,默认选择第一个 } // for(int i = 0; i < ui->comboBox_soundCardNum->count(); ++i) // { // SoundCardRoadInfo_t road = ui->comboBox_soundCardNum->itemData(i).value(); // if(road.roadInfo.nRoadNum == roadInfo.scRoadInfo.roadInfo.nRoadNum && // road.nSoundCardNum == roadInfo.scRoadInfo.nSoundCardNum) // { // ui->comboBox_soundCardNum->setCurrentIndex(i); // break; // } // } } int SingleCompareRoadWidget::getIndex() const { return m_nIndex; } void SingleCompareRoadWidget::setIndex(int nIndex) { if(nIndex <= 0) return; m_nIndex = nIndex; QString str = nIndex == 1 ? "主" : QString::number(nIndex); ui->labelRoadName->setText(QString("*%1通道名称:").arg(str)); ui->labelDriverNum->setText(QString("*%1通道声卡设备编号:").arg(str)); ui->checkBox->setText(QString("%1通道开启录音").arg(str)); } /* 获取通道名称 */ QString SingleCompareRoadWidget::getRoadName() const { return ui->lineEditRoadName->text(); } /* 获取声卡录音通道编号 */ SoundCardRoadInfo_t SingleCompareRoadWidget::getSoundCardRoadInfo() { SoundCardRoadInfo_t roadInfo; roadInfo.nSoundCardNum = m_soundCardInfo.nSoundCardNum; roadInfo.strSoundCardID = m_soundCardInfo.strSoundCardID; roadInfo.strSoundCardName = m_soundCardInfo.strSoundCardName; roadInfo.roadInfo.nRoadNum = ui->comboBox_soundCardNum->currentData().value(); return roadInfo; } /* 是否开启录音 */ bool SingleCompareRoadWidget::isRecordEnabled() const { return ui->checkBox->isChecked(); } /* 设置通道名称报警 */ void SingleCompareRoadWidget::setRoadNameWarn(bool isWarn) { ui->lineEditRoadName->setProperty("Warn", isWarn); ui->lineEditRoadName->style()->unpolish(ui->lineEditRoadName); ui->lineEditRoadName->style()->polish(ui->lineEditRoadName); ui->lineEditRoadName->update(); } /* 设置样式表 */ void SingleCompareRoadWidget::setQSS(QString strStyle) { this->setStyleSheet(strStyle); ui->comboBox_soundCardNum->setStyleSheet(strStyle); /* 设置下拉框阴影 */ ui->comboBox_soundCardNum->setViewShadowEffect(); // SPDLOG_INFO("ui->comboBox_soundCardNum 样式表: {}", ui->comboBox_soundCardNum->styleSheet().toStdString()); }