#include "oneparamitem.h" #include "ui_oneparamitem.h" #include #include #include "customcombobox.h" OneParamItem::OneParamItem(QWidget *parent) : QWidget(parent), ui(new Ui::OneParamItem) { ui->setupUi(this); m_logger = spdlog::get("EyeMap"); if(m_logger == nullptr) { qDebug() << "获取 EyeMap logger 失败"; return; } /* 注册事件过滤器 */ ui->comboBox_voltage->installEventFilter(this); /* 加载QSS */ QFile fileQss(":/qss/ParameterConfig/OneParamItem/OneParamItem.qss"); if(fileQss.open(QFile::ReadOnly)) { QString qss = fileQss.readAll(); this->setStyleSheet(qss); fileQss.close(); } else { SPDLOG_LOGGER_ERROR(m_logger, "加载QSS文件失败"); } /* 添加默认的电压范围 */ ui->comboBox_voltage->addItem("0.5V", static_cast(OscVoltageRange::CR_500MV)); ui->comboBox_voltage->addItem("1V", static_cast(OscVoltageRange::CR_1V)); ui->comboBox_voltage->addItem("2.5V", static_cast(OscVoltageRange::CR_2V5)); ui->comboBox_voltage->addItem("5V", static_cast(OscVoltageRange::CR_5V)); /* 设置默认的选项 */ ui->comboBox_voltage->setCurrentIndex(2); /* 连接信号和槽 */ connect(ui->comboBox_voltage, static_cast(&QComboBox::currentIndexChanged), this, &OneParamItem::do_selectVoltage); } OneParamItem::~OneParamItem() { delete ui; } /* 设置信息 */ void OneParamItem::setInfo(const OneEyeMapInfo &info) { eyeMapInfo = info; ui->label_title->setText(info.title); /* 设置颜色 */ QString qss = QString(R"(background: %1; border-radius: 6px; border: 1px solid rgba(255,255,255,0.25);)").arg(info.titleBarColor.name()); ui->label_color->setStyleSheet(qss); /* 设置当前电压值 */ ui->comboBox_voltage->setCurrentText(getVoltageRangeStr(info.voltageRange)); } /* 事件过滤器 */ bool OneParamItem::eventFilter(QObject *watched, QEvent *event) { if(watched == ui->comboBox_voltage) { if(event->type() == QEvent::Wheel) { return true; } } return QWidget::eventFilter(watched, event); } /* 选择了电压值 */ void OneParamItem::do_selectVoltage(int index) { eyeMapInfo.voltageRange = static_cast(ui->comboBox_voltage->currentData().toInt()); } /* 根据输入的枚举值获取字符串 */ QString OneParamItem::getVoltageRangeStr(OscVoltageRange range) { switch (range) { case OscVoltageRange::CR_100MV: return "0.1V"; case OscVoltageRange::CR_250MV: return "0.25V"; case OscVoltageRange::CR_500MV: return "0.5V"; case OscVoltageRange::CR_1V: return "1V"; case OscVoltageRange::CR_2V5: return "2.5V"; case OscVoltageRange::CR_5V: return "5V"; case OscVoltageRange::CR_8V: return "8V"; default: return "2.5V"; } }