196 lines
5.6 KiB
C++
196 lines
5.6 KiB
C++
#include "HyperImagerControl.h"
|
|
|
|
HyperImagerControl::HyperImagerControl(QWidget* parent)
|
|
: QDialog(parent)
|
|
{
|
|
ui.setupUi(this);
|
|
|
|
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_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_spinBox, &QDoubleSpinBox::editingFinished, this, &HyperImagerControl::onGainSpinBoxEditingFinished);
|
|
connect(ui.GainSlider, &QSlider::valueChanged, this, &HyperImagerControl::onGainSliderChanged);
|
|
connect(ui.GainSlider, &QSlider::sliderReleased, this, &HyperImagerControl::onGainSliderReleased);
|
|
|
|
ui.GainSlider->setMaximum(12);
|
|
ui.GainSlider->setMinimum(0);
|
|
|
|
ui.gain_spinBox->setMaximum(12);
|
|
ui.gain_spinBox->setMinimum(0);
|
|
|
|
ui.widget_3->setStyleSheet(R"(
|
|
QDoubleSpinBox {
|
|
border: 1px solid #999;
|
|
border-radius: 4px;
|
|
padding: 2px 20px 2px 6px; /* 右侧留空间给按钮 */
|
|
background: #0e1c4c;
|
|
selection-background-color: #0078d7;
|
|
font-size: 12px;
|
|
color:#ACCDFF ;
|
|
}
|
|
|
|
QDoubleSpinBox::up-button {
|
|
subcontrol-origin: border;
|
|
subcontrol-position: top right;
|
|
width: 16px;
|
|
border-left: 1px solid #ccc;
|
|
}
|
|
|
|
QDoubleSpinBox::down-button {
|
|
subcontrol-origin: border;
|
|
subcontrol-position: bottom right;
|
|
width: 16px;
|
|
border-left: 1px solid #ccc;
|
|
}
|
|
|
|
QDoubleSpinBox::up-arrow {
|
|
image: url(:/svg/resources/icons/svg/arrow_up.svg);
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
|
|
QDoubleSpinBox::down-arrow {
|
|
image: url(:/svg/resources/icons/svg/arrow_down.svg);
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
|
|
QDoubleSpinBox::up-button:hover,
|
|
QDoubleSpinBox::down-button:hover {
|
|
background: #e6f2ff;
|
|
}
|
|
|
|
QDoubleSpinBox::up-button:pressed,
|
|
QDoubleSpinBox::down-button:pressed {
|
|
background: #cce4ff;
|
|
}
|
|
)");
|
|
|
|
}
|
|
|
|
HyperImagerControl::~HyperImagerControl()
|
|
{
|
|
}
|
|
|
|
void HyperImagerControl::setFrameRate(double frameRate)
|
|
{
|
|
ui.framerate_spinBox->setValue(frameRate);
|
|
ui.FramerateSlider->setValue(frameRate);
|
|
|
|
updateIntegrationTimeRange(frameRate);
|
|
}
|
|
|
|
void HyperImagerControl::setIntegrationTime(double integrationTime)
|
|
{
|
|
ui.integratioin_time_spinBox->setValue(integrationTime);
|
|
ui.IntegratioinTimeSlider->setValue(integrationTime);
|
|
|
|
updateFramerateRange(integrationTime);
|
|
}
|
|
|
|
void HyperImagerControl::setGain(double gain)
|
|
{
|
|
ui.gain_spinBox->setValue(gain);
|
|
ui.GainSlider->setValue(gain);
|
|
}
|
|
|
|
void HyperImagerControl::onFramerateSpinBoxEditingFinished()
|
|
{
|
|
double framerate = ui.framerate_spinBox->value();
|
|
ui.FramerateSlider->setValue(framerate);
|
|
emit framerateChanged(framerate);
|
|
}
|
|
|
|
void HyperImagerControl::onFramerateSliderChanged(double framerate)
|
|
{
|
|
ui.framerate_spinBox->blockSignals(true);
|
|
ui.framerate_spinBox->setValue(framerate);
|
|
ui.framerate_spinBox->blockSignals(false);
|
|
}
|
|
|
|
void HyperImagerControl::onFramerateSliderReleased()
|
|
{
|
|
double framerate = ui.framerate_spinBox->value();
|
|
emit framerateChanged(framerate);
|
|
}
|
|
|
|
void HyperImagerControl::onIntegrationTimeSpinBoxEditingFinished()
|
|
{
|
|
double integrationTime = ui.integratioin_time_spinBox->value();
|
|
ui.IntegratioinTimeSlider->setValue(integrationTime);
|
|
emit integrationTimeChanged(integrationTime);
|
|
}
|
|
|
|
void HyperImagerControl::onIntegrationTimeSliderChanged(double 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_spinBox->value();
|
|
emit integrationTimeChanged(integrationTime);
|
|
}
|
|
|
|
void HyperImagerControl::onGainSpinBoxEditingFinished()
|
|
{
|
|
double gain = ui.gain_spinBox->value();
|
|
ui.GainSlider->setValue(gain);
|
|
emit gainChanged(gain);
|
|
}
|
|
|
|
void HyperImagerControl::onGainSliderChanged(double gain)
|
|
{
|
|
ui.gain_spinBox->blockSignals(true);
|
|
ui.gain_spinBox->setValue(gain);
|
|
ui.gain_spinBox->blockSignals(false);
|
|
}
|
|
|
|
void HyperImagerControl::onGainSliderReleased()
|
|
{
|
|
double gain = ui.gain_spinBox->value();
|
|
emit gainChanged(gain);
|
|
}
|
|
|
|
void HyperImagerControl::updateIntegrationTimeRange(double frameRate)
|
|
{
|
|
double maxIntegrationTime = 1.0 / frameRate * 1000.0; // 毫秒
|
|
|
|
ui.IntegratioinTimeSlider->blockSignals(true);
|
|
ui.IntegratioinTimeSlider->setMaximum(maxIntegrationTime);
|
|
ui.IntegratioinTimeSlider->setMinimum(1);
|
|
ui.IntegratioinTimeSlider->blockSignals(false);
|
|
|
|
ui.integratioin_time_spinBox->blockSignals(true);
|
|
ui.integratioin_time_spinBox->setMaximum(maxIntegrationTime);
|
|
ui.integratioin_time_spinBox->setMinimum(1);
|
|
ui.integratioin_time_spinBox->blockSignals(false);
|
|
}
|
|
|
|
void HyperImagerControl::updateFramerateRange(double integrationTime)
|
|
{
|
|
double maxFramerate = 1.0 / (integrationTime / 1000.0); // 积分时间(毫秒)转帧率
|
|
|
|
if(maxFramerate > m_frameRateLimit)
|
|
{
|
|
maxFramerate = m_frameRateLimit;
|
|
}
|
|
|
|
ui.FramerateSlider->blockSignals(true);
|
|
ui.FramerateSlider->setMaximum(maxFramerate);
|
|
ui.FramerateSlider->setMinimum(1);
|
|
ui.FramerateSlider->blockSignals(false);
|
|
|
|
ui.framerate_spinBox->blockSignals(true);
|
|
ui.framerate_spinBox->setMaximum(maxFramerate);
|
|
ui.framerate_spinBox->setMinimum(1);
|
|
ui.framerate_spinBox->blockSignals(false);
|
|
}
|