From d358989579052d88a69871052eac77209b53588b Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Fri, 20 Mar 2026 15:33:25 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=20=E7=9B=B8=E6=9C=BA=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=9C=89=E6=95=88=E6=80=A7=E6=8E=A7=E5=88=B63?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HPPA/HyperImagerControl.cpp | 98 ++++++++++++++++++++++++------------- HPPA/HyperImagerControl.h | 13 +++-- HPPA/QDoubleSlider.cpp | 2 +- HPPA/QDoubleSlider.h | 4 +- HPPA/hyperImagerControl.ui | 30 ++++++------ 5 files changed, 88 insertions(+), 59 deletions(-) diff --git a/HPPA/HyperImagerControl.cpp b/HPPA/HyperImagerControl.cpp index 9ee2737..90fbb94 100644 --- a/HPPA/HyperImagerControl.cpp +++ b/HPPA/HyperImagerControl.cpp @@ -5,20 +5,25 @@ HyperImagerControl::HyperImagerControl(QWidget* parent) { ui.setupUi(this); - connect(ui.framerate_lineEdit, &QLineEdit::editingFinished, this, &HyperImagerControl::onFramerateLineEditEditingFinished); - connect(ui.FramerateSlider, &QSlider::valueChanged, this, &HyperImagerControl::onFramerateSliderChanged); - connect(ui.FramerateSlider, &QSlider::sliderReleased, this, &HyperImagerControl::onFramerateSliderReleased); + connect(ui.framerate_spinBox, &QDoubleSpinBox::editingFinished, this, &HyperImagerControl::onFramerateSpinBoxEditingFinished); + connect(ui.FramerateSlider, &QDoubleSlider::valueChanged, this, &HyperImagerControl::onFramerateSliderChanged); + connect(ui.FramerateSlider, &QDoubleSlider::sliderReleased, this, &HyperImagerControl::onFramerateSliderReleased); - connect(ui.integratioin_time_lineEdit, &QLineEdit::editingFinished, this, &HyperImagerControl::onIntegrationTimeLineEditEditingFinished); - connect(ui.IntegratioinTimeSlider, &QSlider::valueChanged, this, &HyperImagerControl::onIntegrationTimeSliderChanged); - connect(ui.IntegratioinTimeSlider, &QSlider::sliderReleased, this, &HyperImagerControl::onIntegrationTimeSliderReleased); + connect(ui.integratioin_time_spinBox, &QDoubleSpinBox::editingFinished, this, &HyperImagerControl::onIntegrationTimeSpinBoxEditingFinished); + connect(ui.IntegratioinTimeSlider, &QDoubleSlider::valueChanged, this, &HyperImagerControl::onIntegrationTimeSliderChanged); + connect(ui.IntegratioinTimeSlider, &QDoubleSlider::sliderReleased, this, &HyperImagerControl::onIntegrationTimeSliderReleased); - connect(ui.gain_lineEdit, &QLineEdit::editingFinished, this, &HyperImagerControl::onGainLineEditEditingFinished); + connect(ui.gain_spinBox, &QDoubleSpinBox::editingFinished, this, &HyperImagerControl::onGainSpinBoxEditingFinished); connect(ui.GainSlider, &QSlider::valueChanged, this, &HyperImagerControl::onGainSliderChanged); connect(ui.GainSlider, &QSlider::sliderReleased, this, &HyperImagerControl::onGainSliderReleased); + ui.framerate_spinBox->setMinimum(1); + ui.framerate_spinBox->setMaximum(250); ui.FramerateSlider->setMinimum(1); ui.FramerateSlider->setMaximum(250); + + ui.gain_spinBox->setMinimum(0); + ui.gain_spinBox->setMaximum(12); ui.GainSlider->setMinimum(0); ui.GainSlider->setMaximum(12); } @@ -29,83 +34,108 @@ HyperImagerControl::~HyperImagerControl() void HyperImagerControl::setFrameRate(double frameRate) { - ui.framerate_lineEdit->setText(QString::number(frameRate, 10, 2)); - ui.FramerateSlider->setValue(frameRate, false); + ui.framerate_spinBox->setValue(frameRate); + ui.FramerateSlider->setValue(frameRate); - //CalculateIntegratioinTimeRange(frameRate); + updateIntegrationTimeRange(frameRate); } void HyperImagerControl::setIntegrationTime(double integrationTime) { - ui.integratioin_time_lineEdit->setText(QString::number(integrationTime, 10, 2)); + ui.integratioin_time_spinBox->setValue(integrationTime); ui.IntegratioinTimeSlider->setValue(integrationTime); + + updateFramerateRange(integrationTime); } void HyperImagerControl::setGain(double gain) { - ui.gain_lineEdit->setText(QString::number(gain, 10, 2)); + ui.gain_spinBox->setValue(gain); ui.GainSlider->setValue(gain); } -void HyperImagerControl::onFramerateLineEditEditingFinished() +void HyperImagerControl::onFramerateSpinBoxEditingFinished() { - double value = ui.framerate_lineEdit->text().toDouble(); - ui.FramerateSlider->setValue(value); - emit framerateChanged(value); + double framerate = ui.framerate_spinBox->value(); + ui.FramerateSlider->setValue(framerate); + emit framerateChanged(framerate); } void HyperImagerControl::onFramerateSliderChanged(double framerate) { - ui.framerate_lineEdit->setText(QString::number(framerate)); + ui.framerate_spinBox->blockSignals(true); + ui.framerate_spinBox->setValue(framerate); + ui.framerate_spinBox->blockSignals(false); } void HyperImagerControl::onFramerateSliderReleased() { - double framerate = ui.framerate_lineEdit->text().toDouble(); + double framerate = ui.framerate_spinBox->value();//这会触发QDoubleSpinBox::editingFinished信号,从而调用onFramerateSpinBoxEditingFinished槽函数,最终发出framerateChanged信号。 emit framerateChanged(framerate); } -void HyperImagerControl::onIntegrationTimeLineEditEditingFinished() +void HyperImagerControl::onIntegrationTimeSpinBoxEditingFinished() { - double value = ui.integratioin_time_lineEdit->text().toDouble(); - ui.IntegratioinTimeSlider->setValue(value); - emit integrationTimeChanged(value); + double integrationTime = ui.integratioin_time_spinBox->value(); + ui.IntegratioinTimeSlider->setValue(integrationTime); + emit integrationTimeChanged(integrationTime); } void HyperImagerControl::onIntegrationTimeSliderChanged(double integrationTime) { - ui.integratioin_time_lineEdit->setText(QString::number(integrationTime)); + ui.integratioin_time_spinBox->blockSignals(true); + ui.integratioin_time_spinBox->setValue(integrationTime); + ui.integratioin_time_spinBox->blockSignals(false); } void HyperImagerControl::onIntegrationTimeSliderReleased() { - double integrationTime = ui.integratioin_time_lineEdit->text().toDouble(); + double integrationTime = ui.integratioin_time_spinBox->value(); emit integrationTimeChanged(integrationTime); } -void HyperImagerControl::onGainLineEditEditingFinished() +void HyperImagerControl::onGainSpinBoxEditingFinished() { - double value = ui.gain_lineEdit->text().toDouble(); - ui.GainSlider->setValue(value); - emit gainChanged(value); + double gain = ui.gain_spinBox->value(); + ui.GainSlider->setValue(gain); + emit gainChanged(gain); } void HyperImagerControl::onGainSliderChanged(double gain) { - ui.gain_lineEdit->setText(QString::number(gain)); + ui.gain_spinBox->blockSignals(true); + ui.gain_spinBox->setValue(gain); + ui.gain_spinBox->blockSignals(false); } void HyperImagerControl::onGainSliderReleased() { - double gain = ui.gain_lineEdit->text().toDouble(); + double gain = ui.gain_spinBox->value(); emit gainChanged(gain); } -void HyperImagerControl::CalculateIntegratioinTimeRange(double frameRate) +void HyperImagerControl::updateIntegrationTimeRange(double frameRate) { - double range = 1 / frameRate * 1000;//毫秒 + double maxIntegrationTime = 1.0 / frameRate * 1000.0; // 毫秒 - ui.IntegratioinTimeSlider->blockSignals(true);//因为setMaximum会触发valueChanged信号,所以调用setMaximum前需要阻断信号 - ui.IntegratioinTimeSlider->setMaximum(range); + ui.IntegratioinTimeSlider->blockSignals(true); + ui.IntegratioinTimeSlider->setMaximum(maxIntegrationTime); ui.IntegratioinTimeSlider->blockSignals(false); + + ui.integratioin_time_spinBox->blockSignals(true); + ui.integratioin_time_spinBox->setMaximum(maxIntegrationTime); + ui.integratioin_time_spinBox->blockSignals(false); +} + +void HyperImagerControl::updateFramerateRange(double integrationTime) +{ + double maxFramerate = 1.0 / (integrationTime / 1000.0); // 积分时间(毫秒)转帧率 + + ui.FramerateSlider->blockSignals(true); + ui.FramerateSlider->setMaximum(maxFramerate); + ui.FramerateSlider->blockSignals(false); + + ui.framerate_spinBox->blockSignals(true); + ui.framerate_spinBox->setMaximum(maxFramerate); + ui.framerate_spinBox->blockSignals(false); } diff --git a/HPPA/HyperImagerControl.h b/HPPA/HyperImagerControl.h index 6a6b92d..1b10ea0 100644 --- a/HPPA/HyperImagerControl.h +++ b/HPPA/HyperImagerControl.h @@ -22,26 +22,25 @@ public: void setIntegrationTime(double integrationTime); void setGain(double gain); - void CalculateIntegratioinTimeRange(double frameRate); - signals: void framerateChanged(double framerate); void integrationTimeChanged(double integrationTime); void gainChanged(double gain); private Q_SLOTS: - void onFramerateLineEditEditingFinished(); + void onFramerateSpinBoxEditingFinished(); void onFramerateSliderChanged(double framerate); void onFramerateSliderReleased(); - - void onIntegrationTimeLineEditEditingFinished(); + void onIntegrationTimeSpinBoxEditingFinished(); void onIntegrationTimeSliderChanged(double integrationTime); void onIntegrationTimeSliderReleased(); - - void onGainLineEditEditingFinished(); + void onGainSpinBoxEditingFinished(); void onGainSliderChanged(double gain); void onGainSliderReleased(); private: + void updateIntegrationTimeRange(double frameRate); + void updateFramerateRange(double integrationTime); + Ui::HyperImagerControl ui; }; diff --git a/HPPA/QDoubleSlider.cpp b/HPPA/QDoubleSlider.cpp index 68ffedf..3e98fa5 100644 --- a/HPPA/QDoubleSlider.cpp +++ b/HPPA/QDoubleSlider.cpp @@ -2,7 +2,7 @@ #include "qDoubleSlider.h" QDoubleSlider::QDoubleSlider(QWidget* pParent /*= NULL*/) : QSlider(pParent), -m_Multiplier(1.0) +m_Multiplier(100.0) { connect(this, SIGNAL(valueChanged(int)), this, SLOT(notifyValueChanged(int))); diff --git a/HPPA/QDoubleSlider.h b/HPPA/QDoubleSlider.h index fc4a863..dcfdd22 100644 --- a/HPPA/QDoubleSlider.h +++ b/HPPA/QDoubleSlider.h @@ -23,8 +23,8 @@ public: private slots: signals : - void valueChanged(double Value); - void rangeChanged(double Min, double Max); + void valueChanged(double Value);//QSlider的valueChanged信号的参数为整型 + void rangeChanged(double Min, double Max);//QSlider的rangeChanged信号的参数为整型 private: double m_Multiplier; diff --git a/HPPA/hyperImagerControl.ui b/HPPA/hyperImagerControl.ui index 1f1241f..3efc50a 100644 --- a/HPPA/hyperImagerControl.ui +++ b/HPPA/hyperImagerControl.ui @@ -186,15 +186,15 @@ QSlider::handle:horizontal:pressed { - + 0 0 - - + + 2 @@ -241,15 +241,15 @@ QSlider::handle:horizontal:pressed { - + 0 0 - - + + 2 @@ -302,20 +302,20 @@ QSlider::handle:horizontal:pressed { - + 0 0 - - + + 2 - + 0 @@ -335,16 +335,16 @@ QSlider::handle:horizontal:pressed { - - QDoubleSlider - QSlider -
qdoubleslider.h
-
AspectRatioLabel QLabel
AspectRatioLabel.h
+ + QDoubleSlider + QSlider +
qdoubleslider.h
+