noisemonitorparamdialog.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #include "noisemonitorparamdialog.h"
  2. #include "ui_noisemonitorparamwidget.h"
  3. #include <QFile>
  4. #include <QIntValidator>
  5. #include <QRegexp>
  6. #include <QRegExpValidator>
  7. #include "UIStyleManager.h"
  8. #include "commonFunc.h"
  9. NoiseMonitorParamDialog::NoiseMonitorParamDialog(QWidget *parent) :
  10. DialogBase(parent),
  11. ui(new Ui::NoiseMonitorParamWidget)
  12. {
  13. QWidget* content = new QWidget(this);
  14. ui->setupUi(content);
  15. m_logger = spdlog::get("ACASetting");
  16. if(m_logger == nullptr)
  17. {
  18. fmt::print("NoiseMonitorParamDialog: Logger ACASetting not found\n");
  19. return;
  20. }
  21. /* 设置弹窗内容 */
  22. setContentWidget(content);
  23. /* 设置弹窗标题 */
  24. setTitle("噪音监测参数");
  25. /* 设置lineEdit输入限制 */
  26. ui->lineEdit_noiseOneDetectDuration->setValidator(new QIntValidator(1, 60, this));
  27. ui->lineEdit_noiseDetectContinueCount->setValidator(new QIntValidator(1, 100, this));
  28. ui->lineEdit_noiseContinueCountIsWarn->setValidator(new QIntValidator(1, 10, this));
  29. ui->lineEdit_noiseContinueCountPercent->setValidator(new QIntValidator(1, 100, this));
  30. /* 限制小数的正则表达式,0.0-1.0,小数点后6位 */
  31. QRegExp regExp1(R"(^(0\.\d{1,6})|(1\.0{0,6})?$)");
  32. QRegExpValidator* validator = new QRegExpValidator(regExp1, this);
  33. ui->lineEdit_thresholdSlient->setValidator(validator);
  34. ui->lineEdit_thresholdDB->setValidator(new StrictDoubleValidator(-100, 0, 2, this));
  35. ui->lineEdit_thresholdCV->setValidator(new StrictDoubleValidator(-100, 0, 2, this));
  36. ui->lineEdit_nperseg->setValidator(new QIntValidator(1, 4096, this));
  37. ui->lineEdit_noverlap->setValidator(new QIntValidator(0, 4096, this));
  38. ui->lineEdit_nfft->setValidator(new QIntValidator(1, 4096, this));
  39. /* 设置qss */
  40. setQss();
  41. }
  42. NoiseMonitorParamDialog::~NoiseMonitorParamDialog()
  43. {
  44. delete ui;
  45. }
  46. /* 设置初始参数 */
  47. void NoiseMonitorParamDialog::setInitialParams(NoiseDetectParam_t& noiseDetectParam)
  48. {
  49. m_noiseDetectParam = noiseDetectParam;
  50. /* 设置初始参数到界面 */
  51. ui->lineEdit_noiseOneDetectDuration->setText(QString::number(noiseDetectParam.nNoiseOneDetectDuration));
  52. ui->lineEdit_noiseDetectContinueCount->setText(QString::number(noiseDetectParam.nNoiseDetectContinueCount));
  53. ui->lineEdit_noiseContinueCountIsWarn->setText(QString::number(noiseDetectParam.nNoiseContinueCountIsWarn));
  54. ui->lineEdit_noiseContinueCountPercent->setText(QString::number(noiseDetectParam.nNoiseContinueCountPercent));
  55. ui->lineEdit_thresholdSlient->setText(QString::number(noiseDetectParam.dThresholdSlient));
  56. ui->lineEdit_thresholdDB->setText(QString::number(noiseDetectParam.dThresholdDB));
  57. ui->lineEdit_thresholdCV->setText(QString::number(noiseDetectParam.dThresholdCV));
  58. ui->lineEdit_nperseg->setText(QString::number(noiseDetectParam.nPerseg));
  59. ui->lineEdit_noverlap->setText(QString::number(noiseDetectParam.nOverlap));
  60. ui->lineEdit_nfft->setText(QString::number(noiseDetectParam.nFFT));
  61. }
  62. /* 设置qss */
  63. void NoiseMonitorParamDialog::setQss()
  64. {
  65. QString qssPath = UIStyle.getQSSPath() + "/noisemonitorparamwidget.qss";
  66. QFile file(qssPath);
  67. if(file.open(QFile::ReadOnly))
  68. {
  69. QString qss = file.readAll();
  70. this->setStyleSheet(qss);
  71. file.close();
  72. }else {
  73. SPDLOG_LOGGER_WARN(m_logger, "无法打开QSS文件: {}", qssPath.toStdString());
  74. }
  75. }
  76. /* 点击了OK */
  77. bool NoiseMonitorParamDialog::isOKClicked()
  78. {
  79. updateNoiseDetectParam();
  80. return true;
  81. }
  82. /* 更新噪音检测参数 */
  83. void NoiseMonitorParamDialog::updateNoiseDetectParam()
  84. {
  85. m_noiseDetectParam.nNoiseOneDetectDuration = ui->lineEdit_noiseOneDetectDuration->text().toInt();
  86. m_noiseDetectParam.nNoiseDetectContinueCount = ui->lineEdit_noiseDetectContinueCount->text().toInt();
  87. m_noiseDetectParam.nNoiseContinueCountIsWarn = ui->lineEdit_noiseContinueCountIsWarn->text().toInt();
  88. m_noiseDetectParam.nNoiseContinueCountPercent = ui->lineEdit_noiseContinueCountPercent->text().toInt();
  89. m_noiseDetectParam.dThresholdSlient = ui->lineEdit_thresholdSlient->text().toDouble();
  90. m_noiseDetectParam.dThresholdDB = ui->lineEdit_thresholdDB->text().toDouble();
  91. m_noiseDetectParam.dThresholdCV = ui->lineEdit_thresholdCV->text().toDouble();
  92. m_noiseDetectParam.nPerseg = ui->lineEdit_nperseg->text().toInt();
  93. m_noiseDetectParam.nOverlap = ui->lineEdit_noverlap->text().toInt();
  94. m_noiseDetectParam.nFFT = ui->lineEdit_nfft->text().toInt();
  95. }