#include "SpeedAdjPage.h" #include "ui_SpeedAdjPage.h" #include #include #include #include SpeedAdjPage::SpeedAdjPage(QWidget *parent) : QMainWindow(parent) , ui(new Ui::SpeedAdjPage) { ui->setupUi(this); Init(); } SpeedAdjPage::~SpeedAdjPage() { qApp->removeEventFilter(this); delete ui; } void SpeedAdjPage::updateDefVal(const ST_DEF_VAL& val) { QString strTip = tr("Mode:", "模组:"); strTip += val.strMode; strTip += tr("Axis:(","轴:("); for (auto&a: val.vecPos) { strTip += a.AxisType.c_str(); strTip += ":"; QString s = QString::number(a.pos, 'f', 2); } strTip += ")"; //ui->speedTitleLabel->setText(strTip); } void SpeedAdjPage::Init() { qApp->installEventFilter(this); setWindowFlag(Qt::FramelessWindowHint); //setFocusPolicy(Qt::StrongFocus); // 绑定按钮 QList listPBut; listPBut.push_back(ui->subBut_1); listPBut.push_back(ui->addBut_1); listPBut.push_back(ui->subBut_10); listPBut.push_back(ui->addBut_10); listPBut.push_back(ui->subBut_100); listPBut.push_back(ui->addBut_100); listPBut.push_back(ui->subBut_1000); listPBut.push_back(ui->addBut_1000); listPBut.push_back(ui->subBut_10000); listPBut.push_back(ui->addBut_10000); listPBut.push_back(ui->subBut_100000); listPBut.push_back(ui->addBut_100000); // 连接每个按钮的clicked信号 for (QPushButton* pBut : listPBut) { connect(pBut, &QPushButton::clicked, [this, pBut]() { QRegularExpression re("^(sub|add)But_(\\d+)$"); QRegularExpressionMatch match = re.match(pBut->objectName()); if (match.hasMatch()) { QString prefix = match.captured(1); int num = match.captured(2).toInt(); int value = (prefix == "sub") ? -num : num; m_nVal = value; // 更新成员变量 emit CloseWnd(m_nVal); } }); } } void SpeedAdjPage::mousePressEvent(QMouseEvent* event) { if (event->button() == Qt::LeftButton) { m_mousePressPosition = event->globalPos(); m_windowPosition = this->frameGeometry().topLeft(); } } void SpeedAdjPage::mouseMoveEvent(QMouseEvent* event) { if (event->buttons() & Qt::LeftButton) { QPoint delta = event->globalPos() - m_mousePressPosition; this->move(m_windowPosition + delta); } } bool SpeedAdjPage::eventFilter(QObject* obj, QEvent* event) { if (event->type() == QEvent::MouseButtonPress) { QMouseEvent* mouseEvent = static_cast(event); QPoint globalPos = mouseEvent->globalPos(); QRect dialogFrame = this->frameGeometry(); if (this->isVisible() && !dialogFrame.contains(globalPos)) { this->close(); } } return false; } void SpeedAdjPage::changeEvent(QEvent* event) { if (event->type() == QEvent::WindowActivate) { // 窗口被激活 //qDebug() << "Main window is now active"; } else if (event->type() == QEvent::WindowDeactivate) { // 窗口失去激活 //qDebug() << "Main window is no longer active"; } QMainWindow::changeEvent(event); } void SpeedAdjPage::on_closeBut_clicked() { this->close(); }