oneparamitem.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "oneparamitem.h"
  2. #include "ui_oneparamitem.h"
  3. #include <QFile>
  4. #include <QDebug>
  5. #include "customcombobox.h"
  6. OneParamItem::OneParamItem(QWidget *parent) :
  7. QWidget(parent),
  8. ui(new Ui::OneParamItem)
  9. {
  10. ui->setupUi(this);
  11. m_logger = spdlog::get("EyeMap");
  12. if(m_logger == nullptr)
  13. {
  14. qDebug() << "获取 EyeMap logger 失败";
  15. return;
  16. }
  17. /* 注册事件过滤器 */
  18. ui->comboBox_voltage->installEventFilter(this);
  19. /* 加载QSS */
  20. QFile fileQss(":/qss/ParameterConfig/OneParamItem/OneParamItem.qss");
  21. if(fileQss.open(QFile::ReadOnly))
  22. {
  23. QString qss = fileQss.readAll();
  24. this->setStyleSheet(qss);
  25. fileQss.close();
  26. } else
  27. {
  28. SPDLOG_LOGGER_ERROR(m_logger, "加载QSS文件失败");
  29. }
  30. /* 添加默认的电压范围 */
  31. ui->comboBox_voltage->addItem("0.5V", static_cast<int>(OscVoltageRange::CR_500MV));
  32. ui->comboBox_voltage->addItem("1V", static_cast<int>(OscVoltageRange::CR_1V));
  33. ui->comboBox_voltage->addItem("2.5V", static_cast<int>(OscVoltageRange::CR_2V5));
  34. ui->comboBox_voltage->addItem("5V", static_cast<int>(OscVoltageRange::CR_5V));
  35. /* 设置默认的选项 */
  36. ui->comboBox_voltage->setCurrentIndex(2);
  37. /* 连接信号和槽 */
  38. connect(ui->comboBox_voltage, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &OneParamItem::do_selectVoltage);
  39. }
  40. OneParamItem::~OneParamItem()
  41. {
  42. delete ui;
  43. }
  44. /* 设置信息 */
  45. void OneParamItem::setInfo(const OneEyeMapInfo &info)
  46. {
  47. eyeMapInfo = info;
  48. ui->label_title->setText(info.title);
  49. /* 设置颜色 */
  50. QString qss = QString(R"(background: %1;
  51. border-radius: 6px;
  52. border: 1px solid rgba(255,255,255,0.25);)").arg(info.titleBarColor.name());
  53. ui->label_color->setStyleSheet(qss);
  54. /* 设置当前电压值 */
  55. ui->comboBox_voltage->setCurrentText(getVoltageRangeStr(info.voltageRange));
  56. }
  57. /* 事件过滤器 */
  58. bool OneParamItem::eventFilter(QObject *watched, QEvent *event)
  59. {
  60. if(watched == ui->comboBox_voltage)
  61. {
  62. if(event->type() == QEvent::Wheel)
  63. {
  64. return true;
  65. }
  66. }
  67. return QWidget::eventFilter(watched, event);
  68. }
  69. /* 选择了电压值 */
  70. void OneParamItem::do_selectVoltage(int index)
  71. {
  72. eyeMapInfo.voltageRange = static_cast<OscVoltageRange>(ui->comboBox_voltage->currentData().toInt());
  73. }
  74. /* 根据输入的枚举值获取字符串 */
  75. QString OneParamItem::getVoltageRangeStr(OscVoltageRange range)
  76. {
  77. switch (range) {
  78. case OscVoltageRange::CR_100MV:
  79. return "0.1V";
  80. case OscVoltageRange::CR_250MV:
  81. return "0.25V";
  82. case OscVoltageRange::CR_500MV:
  83. return "0.5V";
  84. case OscVoltageRange::CR_1V:
  85. return "1V";
  86. case OscVoltageRange::CR_2V5:
  87. return "2.5V";
  88. case OscVoltageRange::CR_5V:
  89. return "5V";
  90. case OscVoltageRange::CR_8V:
  91. return "8V";
  92. default:
  93. return "2.5V";
  94. }
  95. }