singlecompareroadwidget.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include "singlecompareroadwidget.h"
  2. #include "ui_singlecompareroadwidget.h"
  3. #include "customcombobox.h"
  4. SingleCompareRoadWidget::SingleCompareRoadWidget(QWidget *parent)
  5. : QWidget(parent)
  6. , ui(new Ui::SingleCompareRoadWidget)
  7. , m_nIndex(0)
  8. {
  9. ui->setupUi(this);
  10. /* 设置comboBox阴影 */
  11. // ui->comboBox_soundCardNum->setViewShadowEffect();
  12. connect(ui->btnDel, &QPushButton::clicked, this, [this]{emit deleted(m_nIndex);});
  13. }
  14. SingleCompareRoadWidget::~SingleCompareRoadWidget()
  15. {
  16. delete ui;
  17. }
  18. bool SingleCompareRoadWidget::isDelBtnVisible() const
  19. {
  20. return ui->btnDel->isVisible();
  21. }
  22. void SingleCompareRoadWidget::setDelBtnVisible(bool bVisible)
  23. {
  24. ui->btnDel->setVisible(bVisible);
  25. }
  26. /* 设置声卡通道列表 */
  27. void SingleCompareRoadWidget::setSoundCardRoadList(const SoundCardInfo_t& soundCard)
  28. {
  29. m_soundCardInfo = soundCard;
  30. ui->comboBox_soundCardNum->clear();
  31. for(const auto& it : m_soundCardInfo.listRoad)
  32. {
  33. QString strRoadName = QString("%1:%2").arg(m_soundCardInfo.strSoundCardName).arg(it.nRoadNum);
  34. ui->comboBox_soundCardNum->addItem(strRoadName, QVariant::fromValue(it.nRoadNum));
  35. }
  36. /* 默认选择第一个 */
  37. ui->comboBox_soundCardNum->setCurrentIndex(0);
  38. }
  39. /* 设置默认参数,设置之前需要先设置完成声卡可选通道列表 */
  40. void SingleCompareRoadWidget::setDefaultParams(const CompareItemRoadInfo_t& roadInfo)
  41. {
  42. ui->lineEditRoadName->setText(roadInfo.strCompareRoadName);
  43. ui->checkBox->setChecked(roadInfo.isEnableRecord);
  44. // setIndex(roadInfo.nCompareRoadNum); /* 通道编号不需要设置 */
  45. /* 先清空选择,再设置当前选项 */
  46. // ui->comboBox_soundCardNum->setCurrentIndex(-1);
  47. int numIndex = ui->comboBox_soundCardNum->findData(roadInfo.scRoadInfo.roadInfo.nRoadNum);
  48. if(numIndex != -1)
  49. {
  50. ui->comboBox_soundCardNum->setCurrentIndex(numIndex);
  51. } else
  52. {
  53. ui->comboBox_soundCardNum->setCurrentIndex(0); // 如果没有找到,默认选择第一个
  54. }
  55. // for(int i = 0; i < ui->comboBox_soundCardNum->count(); ++i)
  56. // {
  57. // SoundCardRoadInfo_t road = ui->comboBox_soundCardNum->itemData(i).value<SoundCardRoadInfo_t>();
  58. // if(road.roadInfo.nRoadNum == roadInfo.scRoadInfo.roadInfo.nRoadNum &&
  59. // road.nSoundCardNum == roadInfo.scRoadInfo.nSoundCardNum)
  60. // {
  61. // ui->comboBox_soundCardNum->setCurrentIndex(i);
  62. // break;
  63. // }
  64. // }
  65. }
  66. int SingleCompareRoadWidget::getIndex() const
  67. {
  68. return m_nIndex;
  69. }
  70. void SingleCompareRoadWidget::setIndex(int nIndex)
  71. {
  72. if(nIndex <= 0) return;
  73. m_nIndex = nIndex;
  74. QString str = nIndex == 1 ? "主" : QString::number(nIndex);
  75. ui->labelRoadName->setText(QString("<font color='red'>*</font>%1通道名称:").arg(str));
  76. ui->labelDriverNum->setText(QString("<font color='red'>*</font>%1通道声卡设备编号:").arg(str));
  77. ui->checkBox->setText(QString("%1通道开启录音").arg(str));
  78. }
  79. /* 获取通道名称 */
  80. QString SingleCompareRoadWidget::getRoadName() const
  81. {
  82. return ui->lineEditRoadName->text();
  83. }
  84. /* 获取声卡录音通道编号 */
  85. SoundCardRoadInfo_t SingleCompareRoadWidget::getSoundCardRoadInfo()
  86. {
  87. SoundCardRoadInfo_t roadInfo;
  88. roadInfo.nSoundCardNum = m_soundCardInfo.nSoundCardNum;
  89. roadInfo.strSoundCardID = m_soundCardInfo.strSoundCardID;
  90. roadInfo.strSoundCardName = m_soundCardInfo.strSoundCardName;
  91. roadInfo.roadInfo.nRoadNum = ui->comboBox_soundCardNum->currentData().value<int>();
  92. return roadInfo;
  93. }
  94. /* 是否开启录音 */
  95. bool SingleCompareRoadWidget::isRecordEnabled() const
  96. {
  97. return ui->checkBox->isChecked();
  98. }
  99. /* 设置通道名称报警 */
  100. void SingleCompareRoadWidget::setRoadNameWarn(bool isWarn)
  101. {
  102. ui->lineEditRoadName->setProperty("Warn", isWarn);
  103. ui->lineEditRoadName->style()->unpolish(ui->lineEditRoadName);
  104. ui->lineEditRoadName->style()->polish(ui->lineEditRoadName);
  105. ui->lineEditRoadName->update();
  106. }
  107. /* 设置样式表 */
  108. void SingleCompareRoadWidget::setQSS(QString strStyle)
  109. {
  110. this->setStyleSheet(strStyle);
  111. /* 设置下拉框阴影 */
  112. ui->comboBox_soundCardNum->setViewShadowEffect();
  113. }