Files
HPPA/HPPA/HyperImagerControl.cpp
tangchao0503 dac922eb29 打包
使用qrc和rc文件(exe文件图标)管理svg、png等资源
2026-03-25 10:51:00 +08:00

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);
}