#include "paramconfig.h" #include "ui_paramconfig.h" #include #include #include "oneparamitem.h" ParamConfig::ParamConfig(QWidget *parent) : QDialog(parent), ui(new Ui::ParamConfig) { ui->setupUi(this); m_logger = spdlog::get("EyeMap"); if(m_logger == nullptr) { qDebug() << "获取 EyeMap logger 失败"; return; } /* 加载QSS文件 */ QFile fileQss(":/qss/ParameterConfig/paramconfig.qss"); if(fileQss.open(QFile::ReadOnly)) { QString qss = fileQss.readAll(); this->setStyleSheet(qss); fileQss.close(); } else { SPDLOG_LOGGER_ERROR(m_logger, "加载QSS文件失败"); } /* 设置无边框 */ this->setWindowFlags(Qt::FramelessWindowHint); /* 设置背景透明 */ this->setAttribute(Qt::WA_TranslucentBackground); /* 设置事件过滤器 */ ui->comboBox_time->installEventFilter(this); /* 设置tableView */ // initTable(); /* 添加默认的时间刻度选项 */ // ui->comboBox_time->addItem(getTimeGridValueStr(OscTimeGridValue::TGV_20NS), static_cast(OscTimeGridValue::TGV_20NS)); ui->comboBox_time->addItem(getTimeGridValueStr(OscTimeGridValue::TGV_50NS), static_cast(OscTimeGridValue::TGV_50NS)); ui->comboBox_time->addItem(getTimeGridValueStr(OscTimeGridValue::TGV_100NS), static_cast(OscTimeGridValue::TGV_100NS)); ui->comboBox_time->addItem(getTimeGridValueStr(OscTimeGridValue::TGV_200NS), static_cast(OscTimeGridValue::TGV_200NS)); ui->comboBox_time->addItem(getTimeGridValueStr(OscTimeGridValue::TGV_500NS), static_cast(OscTimeGridValue::TGV_500NS)); ui->comboBox_time->addItem(getTimeGridValueStr(OscTimeGridValue::TGV_1US), static_cast(OscTimeGridValue::TGV_1US)); ui->comboBox_time->addItem(getTimeGridValueStr(OscTimeGridValue::TGV_2US), static_cast(OscTimeGridValue::TGV_2US)); ui->comboBox_time->addItem(getTimeGridValueStr(OscTimeGridValue::TGV_5US), static_cast(OscTimeGridValue::TGV_5US)); ui->comboBox_time->addItem(getTimeGridValueStr(OscTimeGridValue::TGV_10US), static_cast(OscTimeGridValue::TGV_10US)); /* 设置默认的时间值 */ ui->comboBox_time->setCurrentIndex(2); /* 连接信号和槽 */ connect(ui->pBtn_close, &QPushButton::clicked, this, &ParamConfig::do_pBtn_close); connect(ui->pBtn_save, &QPushButton::clicked, this, &ParamConfig::do_pBtn_save); connect(ui->pBtn_cancel, &QPushButton::clicked, this, &ParamConfig::do_pBtn_cancel); } ParamConfig::~ParamConfig() { if(m_listItem.size() > 0) { for(auto item : m_listItem) { if(item == nullptr) { continue; } delete item; item = nullptr; } } delete ui; } /** * @brief 创建项,只创建显示的,同时设置时间刻度单位,这个单位每一项都是一样的 * * @param listInfo */ void ParamConfig::createItem(const QList &listInfo) { OscTimeGridValue timeGridValue = OscTimeGridValue::TGV_200NS; for(auto &info : listInfo) { if(!info.isShow) { continue; } timeGridValue = info.tGridValue; OneParamItem *item = new OneParamItem(ui->widget_container); item->hide(); item->setInfo(info); m_listItem.append(item); } /* 设置时间刻度单位 */ ui->comboBox_time->setCurrentText(getTimeGridValueStr(timeGridValue)); layoutItem(); } /* 事件过滤器 */ bool ParamConfig::eventFilter(QObject *watched, QEvent *event) { if(watched == ui->comboBox_time) { if(event->type() == QEvent::Wheel) { return true; } } return QWidget::eventFilter(watched, event); } /* 鼠标点击事件 */ void ParamConfig::mousePressEvent(QMouseEvent *event) { m_lastPos = event->globalPos(); event->accept(); } /* 鼠标移动事件 */ void ParamConfig::mouseMoveEvent(QMouseEvent *event) { auto point = ui->widget_top->mapToGlobal(QPoint(0, 0)); QRect rect(point, ui->widget_top->size()); if(!rect.contains(m_lastPos)) { event->accept(); return; } int dx = event->globalX() - m_lastPos.x(); int dy = event->globalY() - m_lastPos.y(); this->move(this->x() + dx, this->y() + dy); m_lastPos = event->globalPos(); event->accept(); } /* 鼠标释放事件 */ void ParamConfig::mouseReleaseEvent(QMouseEvent *event) { event->accept(); } /* 布局item */ void ParamConfig::layoutItem() { for(auto &item : m_listItem) { /* 计算位置,需要加上每个item之间的24间距 */ int dy = item->height() * ( item->eyeMapInfo.num - 1) + (item->eyeMapInfo.num - 1) * 24; item->move(0, dy); item->show(); } } /* 更新全局的眼图数据 */ void ParamConfig::updateEyeMapInfo() { /* 获取当前的时间单位 */ OscTimeGridValue timeGridValue = static_cast(ui->comboBox_time->currentData().toInt()); for(auto &item : m_listItem) { item->eyeMapInfo.tGridValue = timeGridValue; GEyeMapInfo.updateVoltageAndTimeGardInfo(item->eyeMapInfo); } } /* 获取时间刻度对应的字符串 */ QString ParamConfig::getTimeGridValueStr(OscTimeGridValue value) { switch (value) { case OscTimeGridValue::TGV_20NS: return "0.02us"; case OscTimeGridValue::TGV_50NS: return "0.05us"; case OscTimeGridValue::TGV_100NS: return "0.1us"; case OscTimeGridValue::TGV_200NS: return "0.2us"; case OscTimeGridValue::TGV_500NS: return "0.5us"; case OscTimeGridValue::TGV_1US: return "1us"; case OscTimeGridValue::TGV_2US: return "2us"; case OscTimeGridValue::TGV_5US: return "5us"; case OscTimeGridValue::TGV_10US: return "10us"; case OscTimeGridValue::TGV_20US: return "20us"; case OscTimeGridValue::TGV_100US: return "100us"; default: return "1us"; } } /* 关闭按钮 */ void ParamConfig::do_pBtn_close() { isOk = false; this->close(); } /* 保存按钮 */ void ParamConfig::do_pBtn_save() { updateEyeMapInfo(); isOk = true; this->close(); } /* 点击了取消按钮 */ void ParamConfig::do_pBtn_cancel() { isOk = false; this->close(); }