From 0fb81ab3e8d5e86e12f78d82dd21ac23a4b2c072 Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Fri, 20 Mar 2026 09:08:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E6=9C=BA=E5=8F=82=E6=95=B0=E6=9C=89?= =?UTF-8?q?=E6=95=88=E6=80=A7=E6=8E=A7=E5=88=B62?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HPPA/HPPA.cpp | 126 +++---------- HPPA/HPPA.h | 19 +- HPPA/HPPA.ui | 322 --------------------------------- HPPA/HPPA.vcxproj | 3 + HPPA/HPPA.vcxproj.filters | 9 + HPPA/HyperImagerControl.cpp | 111 ++++++++++++ HPPA/HyperImagerControl.h | 47 +++++ HPPA/QDoubleSlider.cpp | 2 +- HPPA/hyperImagerControl.ui | 351 ++++++++++++++++++++++++++++++++++++ 9 files changed, 559 insertions(+), 431 deletions(-) create mode 100644 HPPA/HyperImagerControl.cpp create mode 100644 HPPA/HyperImagerControl.h create mode 100644 HPPA/hyperImagerControl.ui diff --git a/HPPA/HPPA.cpp b/HPPA/HPPA.cpp index 799fed0..bcdd751 100644 --- a/HPPA/HPPA.cpp +++ b/HPPA/HPPA.cpp @@ -93,27 +93,6 @@ HPPA::HPPA(QWidget* parent) ui.splitter->setStretchFactor(2, 3);*/ initMenubarToolbar(); - - //光谱仪操作 - m_Imager = nullptr; - m_RecordState = 0; - connect(this->ui.action_connect_imager, SIGNAL(triggered()), this, SLOT(onconnect()));//信号与槽:连接相机,相机操作相关信号与槽绑定放在函数onconnect中 - - //设置相机可用帧率范围:这些设置必须在slider的信号和槽连接connect前,否则setMinimum会改变slider的值 - ui.FramerateSlider->setMinimum(1); - ui.FramerateSlider->setMaximum(250); - ui.GainSlider->setMinimum(0); - ui.GainSlider->setMaximum(24); - //相机参数控件设置为不可用 - frame_number->setEnabled(false); - - ui.framerate_lineEdit->setEnabled(false); - ui.integratioin_time_lineEdit->setEnabled(false); - ui.gain_lineEdit->setEnabled(false); - - ui.FramerateSlider->setEnabled(false); - ui.IntegratioinTimeSlider->setEnabled(false); - ui.GainSlider->setEnabled(false); startTimer(1000); @@ -572,7 +551,10 @@ sizePolicy1.setHeightForWidth(graphicsView_delete->sizePolicy().hasHeightForWidt } )"); - + //光谱仪操作 + m_Imager = nullptr; + m_RecordState = 0; + connect(this->ui.action_connect_imager, SIGNAL(triggered()), this, SLOT(onconnect()));//信号与槽:连接相机,相机操作相关信号与槽绑定放在函数onconnect中 createActionGroups(); connect(mImagerGroup, &QActionGroup::triggered, this, &HPPA::selectingImager); @@ -693,6 +675,7 @@ void HPPA::initMenubarToolbar() } )"); QAction* action = ui.mainToolBar->insertWidget(ui.action_start_recording, frame_number); + frame_number->setEnabled(false); m_FilenameLineEdit = new QLineEdit(ui.mainToolBar); m_FilenameLineEdit->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}"); @@ -801,6 +784,10 @@ QWidget* HPPA::tmp(QWidget* a) void HPPA::initControlTabwidget() { + m_hic = new HyperImagerControl(); + ui.controlTabWidget->addTab(m_hic, QString::fromLocal8Bit("光谱仪")); + m_hic->setDisabled(true); + //rgb相机 m_RgbCameraThread = new QThread(); m_RgbCamera = new RgbCameraOperation(); @@ -962,8 +949,8 @@ void HPPA::updateImagerPicture(const QString& actionName) } } } - ui.imagerPictureLabel->setAttribute(Qt::WA_TranslucentBackground); - ui.imagerPictureLabel->setOriginalPixmap(QPixmap::fromImage(img)); + m_hic->imagerPictureLabel()->setAttribute(Qt::WA_TranslucentBackground); + m_hic->imagerPictureLabel()->setOriginalPixmap(QPixmap::fromImage(img)); } } } @@ -1305,15 +1292,6 @@ void HPPA::createPlantPhenotypeScenario() } -void HPPA::CalculateIntegratioinTimeRange() -{ - double range = 1 / m_Imager->getFramerate() * 1000;//毫秒 - - ui.IntegratioinTimeSlider->blockSignals(true);//因为setMaximum会触发valueChanged信号,所以调用setMaximum前需要阻断信号 - ui.IntegratioinTimeSlider->setMaximum(range); - ui.IntegratioinTimeSlider->blockSignals(false); -} - void HPPA::onStartRecordStep1() { QAction* checked = moveplatformActionGroup->checkedAction(); @@ -1382,7 +1360,7 @@ void HPPA::onStartRecordStep1() m_RecordState -= 1; ui.action_start_recording->setText(QString::fromLocal8Bit("采集")); - ui.action_start_recording->setIcon(QIcon(".//icon//all//record_done.svg")); + ui.action_start_recording->setIcon(QIcon(".//icon//all//record_done.svg")); //ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}"); } return; @@ -1542,52 +1520,24 @@ void HPPA::onActionOpenDirectory() string directory = fileOperation->getDirectoryFromString(); QDesktopServices::openUrl(QUrl::fromLocalFile(QString::fromStdString(directory))); - - } -void HPPA::OnFramerateLineeditEditingFinished() +void HPPA::onFramerateChanged(double framerate) { - std::cout << "Lineedit设置帧率------------------------------------------" << std::endl; - m_Imager->setFramerate(this->ui.framerate_lineEdit->text().toDouble()); - ui.FramerateSlider->setValue(ui.framerate_lineEdit->text().toDouble()); - - CalculateIntegratioinTimeRange(); + m_Imager->setFramerate(framerate); + m_hic->setFrameRate(m_Imager->getFramerate()); } -void HPPA::OnFramerateSliderChanged(double framerate) +void HPPA::onIntegrationTimeChanged(double integrationTime) { - std::cout << "Slider设置帧率------------------------------------------" << std::endl; - m_Imager->setFramerate(this->ui.framerate_lineEdit->text().toDouble()); - ui.framerate_lineEdit->setText(QString::number(framerate)); - - CalculateIntegratioinTimeRange(); + m_Imager->setIntegrationTime(integrationTime); + m_hic->setIntegrationTime(m_Imager->getIntegrationTime()); } -void HPPA::OnIntegratioinTimeEditingFinished() +void HPPA::onGainChanged(double gain) { - std::cout << "Lineedit设置积分时间------------------------------------------" << std::endl; - m_Imager->setIntegrationTime(this->ui.integratioin_time_lineEdit->text().toDouble()); - ui.IntegratioinTimeSlider->setValue(ui.integratioin_time_lineEdit->text().toDouble()); -} - -void HPPA::OnIntegratioinTimeSliderChanged(double IntegratioinTime) -{ - std::cout << "Slider设置积分时间------------------------------------------" << std::endl; - m_Imager->setIntegrationTime(IntegratioinTime); - ui.integratioin_time_lineEdit->setText(QString::number(IntegratioinTime)); -} - -void HPPA::OnGainEditingFinished() -{ - m_Imager->setGain(this->ui.gain_lineEdit->text().toDouble()); - ui.GainSlider->setValue(ui.gain_lineEdit->text().toDouble()); -} - -void HPPA::OnGainSliderChanged(double Gain) -{ - m_Imager->setGain(this->ui.gain_lineEdit->text().toDouble()); - ui.gain_lineEdit->setText(QString::number(Gain)); + m_Imager->setGain(gain); + m_hic->setGain(m_Imager->getGain()); } void HPPA::onLeftMouseButtonPressed(int x, int y, QVector wavelengths, QVector spectrum) @@ -1905,25 +1855,13 @@ void HPPA::onconnect() connect(this->ui.actionOpenDirectory, SIGNAL(triggered()), this, SLOT(onActionOpenDirectory())); - - connect(this->ui.framerate_lineEdit, SIGNAL(editingFinished()), this, SLOT(OnFramerateLineeditEditingFinished())); - connect(this->ui.FramerateSlider, SIGNAL(valueChanged(double)), this, SLOT(OnFramerateSliderChanged(double))); - connect(this->ui.integratioin_time_lineEdit, SIGNAL(editingFinished()), this, SLOT(OnIntegratioinTimeEditingFinished())); - connect(this->ui.IntegratioinTimeSlider, SIGNAL(valueChanged(double)), this, SLOT(OnIntegratioinTimeSliderChanged(double))); - connect(this->ui.gain_lineEdit, SIGNAL(editingFinished()), this, SLOT(OnGainEditingFinished())); - connect(this->ui.GainSlider, SIGNAL(valueChanged(double)), this, SLOT(OnGainSliderChanged(double))); - + connect(m_hic, SIGNAL(framerateChanged(double)), this, SLOT(onFramerateChanged(double))); + connect(m_hic, SIGNAL(integrationTimeChanged(double)), this, SLOT(onIntegrationTimeChanged(double))); + connect(m_hic, SIGNAL(gainChanged(double)), this, SLOT(onGainChanged(double))); //相机参数控件设置为可用 + 输入控制 frame_number->setEnabled(true); - - ui.framerate_lineEdit->setEnabled(true); - ui.integratioin_time_lineEdit->setEnabled(true); - ui.gain_lineEdit->setEnabled(true); - - ui.FramerateSlider->setEnabled(true); - ui.IntegratioinTimeSlider->setEnabled(true); - ui.GainSlider->setEnabled(true); + m_hic->setDisabled(false); /*QRegExp rx("\\d{0,3}[1-9]$"); ui.framerate_lineEdit->setValidator(new QRegExpValidator(rx)); @@ -1933,15 +1871,9 @@ void HPPA::onconnect() ui.gain_lineEdit->setValidator(new QRegExpValidator(rx));*/ //获取相机参数并显示到界面中 - ui.framerate_lineEdit->setText(QString::number(m_Imager->getFramerate(), 10, 2)); - ui.FramerateSlider->setValue(m_Imager->getFramerate(), true); - CalculateIntegratioinTimeRange(); - - ui.integratioin_time_lineEdit->setText(QString::number(m_Imager->getIntegrationTime(), 10, 2)); - ui.IntegratioinTimeSlider->setValue(m_Imager->getIntegrationTime()); - - ui.gain_lineEdit->setText(QString::number(m_Imager->getGain(), 10, 2)); - ui.GainSlider->setValue(m_Imager->getGain()); + m_hic->setFrameRate(m_Imager->getFramerate()); + m_hic->setIntegrationTime(m_Imager->getIntegrationTime()); + m_hic->setGain(m_Imager->getGain()); } catch (std::exception const& e) { @@ -1979,7 +1911,7 @@ void HPPA::onAutoExposure() double ReturnedExposureTime = m_Imager->auto_exposure(); //将自动曝光所得的值显示到界面 - ui.IntegratioinTimeSlider->setValue(ReturnedExposureTime, false); + m_hic->setIntegrationTime(ReturnedExposureTime); //ui.mainToolBar->widgetForAction(ui.action_auto_exposure)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}"); } diff --git a/HPPA/HPPA.h b/HPPA/HPPA.h index 60659c6..3e38408 100644 --- a/HPPA/HPPA.h +++ b/HPPA/HPPA.h @@ -69,6 +69,8 @@ #include "AspectRatioLabel.h" +#include "HyperImagerControl.h" + #define PI 3.1415926 QT_CHARTS_USE_NAMESPACE//QChartView 使用 需要加宏, 否则无法使用 @@ -186,8 +188,6 @@ public: static HPPA* instance(); LayerTreeNode* rasterGroupNode() const; - void CalculateIntegratioinTimeRange();//通过帧率计算积分时间范围,设置slider最大值 - WorkerThread * m_TestImagerStausThread;//检测相机连接状态的线程 private: @@ -267,6 +267,7 @@ private: TabManager* m_tabManager; + HyperImagerControl* m_hic; ImageControl* m_ic; adjustTable* m_adt; PowerControl* m_pc; @@ -317,16 +318,12 @@ public Q_SLOTS: void onTabWidgetCurrentChanged(int index); void onActionOpenDirectory(); - void OnFramerateLineeditEditingFinished();// - void OnFramerateSliderChanged(double framerate);// + void onFramerateChanged(double framerate); + void onIntegrationTimeChanged(double integrationTime); + void onGainChanged(double gain); - void OnIntegratioinTimeEditingFinished();// - void OnIntegratioinTimeSliderChanged(double IntegratioinTime);// - void OnGainEditingFinished();// - void OnGainSliderChanged(double Gain);// - - void onLeftMouseButtonPressed(int x, int y, QVector wavelengths, QVector spectrum);//点击影像像元显示光谱 - void setAxis(QValueAxis* axisX, QValueAxis* axisY); + void onLeftMouseButtonPressed(int x, int y, QVector wavelengths, QVector spectrum);//点击影像像元显示光谱 + void setAxis(QValueAxis* axisX, QValueAxis* axisY); void timerEvent(QTimerEvent *event); diff --git a/HPPA/HPPA.ui b/HPPA/HPPA.ui index ca19e65..1a913f6 100644 --- a/HPPA/HPPA.ui +++ b/HPPA/HPPA.ui @@ -327,318 +327,6 @@ QTabWidget::pane { Qt::ElideNone - - - -QLineEdit { - background-color: #142D7F; - color: #e6eeff; - border: 1px solid #2f6bff; - border-radius: 6px; - padding: 4px 8px; - min-width: 70px; - min-height: 20px; - font-size: 13px; -} -QLineEdit:hover { - border: 1px solid #4d8dff; -} - -QLineEdit:focus { - border: 1px solid #6aa2ff; - background-color: #23345c; -} - - - - - - -QSlider::groove:horizontal { - height: 10px; - background: #1e2a44; - border-radius: 3px; -} - -/* 已滑过:渐变蓝 */ -QSlider::sub-page:horizontal { - background: qlineargradient( - x1:0, y1:0, x2:1, y2:0, - stop:0 #1f4fff, - stop:0.5 #2f6bff, - stop:1 #5fa0ff - ); - border-radius: 3px; -} - -/* 未滑过 */ -QSlider::add-page:horizontal { - height: 10px; - background: #2a3550; - border-radius: 3px; -} - -/* ===== 滑块按钮 ===== */ -QSlider::handle:horizontal { - width: 15px; - height: 10px; - - /* 蓝色实心 */ - background: #2f6bff; - - /* 白色外圈 */ - border: 2px solid #ffffff; - border-radius: 5px; - - /* 垂直居中 */ - margin: -5px 0; -} - -/* 悬停 */ -QSlider::handle:horizontal:hover { - background: #4d8dff; -} - -/* 按下 */ -QSlider::handle:horizontal:pressed { - background: #1f4fff; -} - - - 光谱仪 - - - - 10 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 10 - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - color: rgb(255, 255, 255); - - - 帧率 - - - Qt::AlignCenter - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - color: rgb(255, 255, 255); - - - 积分时间 - - - Qt::AlignCenter - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - color: rgb(255, 255, 255); - - - gain - - - Qt::AlignCenter - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - - - - - - - - QGroupBox @@ -1147,11 +835,6 @@ QPushButton:pressed - - QDoubleSlider - QSlider -
qdoubleslider.h
-
CustomDockWidgetBase QDockWidget @@ -1164,11 +847,6 @@ QPushButton:pressed
CustomDockWidgetBase.h
1
- - AspectRatioLabel - QLabel -
AspectRatioLabel.h
-
diff --git a/HPPA/HPPA.vcxproj b/HPPA/HPPA.vcxproj index 040a468..29b6873 100644 --- a/HPPA/HPPA.vcxproj +++ b/HPPA/HPPA.vcxproj @@ -112,6 +112,7 @@ + @@ -166,6 +167,7 @@ + @@ -196,6 +198,7 @@ + diff --git a/HPPA/HPPA.vcxproj.filters b/HPPA/HPPA.vcxproj.filters index 23aa042..d96661d 100644 --- a/HPPA/HPPA.vcxproj.filters +++ b/HPPA/HPPA.vcxproj.filters @@ -193,6 +193,9 @@ Source Files + + Source Files + @@ -312,6 +315,9 @@ Header Files + + Header Files + @@ -388,6 +394,9 @@ Form Files + + Form Files + diff --git a/HPPA/HyperImagerControl.cpp b/HPPA/HyperImagerControl.cpp new file mode 100644 index 0000000..9ee2737 --- /dev/null +++ b/HPPA/HyperImagerControl.cpp @@ -0,0 +1,111 @@ +#include "HyperImagerControl.h" + +HyperImagerControl::HyperImagerControl(QWidget* parent) + : QDialog(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.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.gain_lineEdit, &QLineEdit::editingFinished, this, &HyperImagerControl::onGainLineEditEditingFinished); + connect(ui.GainSlider, &QSlider::valueChanged, this, &HyperImagerControl::onGainSliderChanged); + connect(ui.GainSlider, &QSlider::sliderReleased, this, &HyperImagerControl::onGainSliderReleased); + + ui.FramerateSlider->setMinimum(1); + ui.FramerateSlider->setMaximum(250); + ui.GainSlider->setMinimum(0); + ui.GainSlider->setMaximum(12); +} + +HyperImagerControl::~HyperImagerControl() +{ +} + +void HyperImagerControl::setFrameRate(double frameRate) +{ + ui.framerate_lineEdit->setText(QString::number(frameRate, 10, 2)); + ui.FramerateSlider->setValue(frameRate, false); + + //CalculateIntegratioinTimeRange(frameRate); +} + +void HyperImagerControl::setIntegrationTime(double integrationTime) +{ + ui.integratioin_time_lineEdit->setText(QString::number(integrationTime, 10, 2)); + ui.IntegratioinTimeSlider->setValue(integrationTime); +} + +void HyperImagerControl::setGain(double gain) +{ + ui.gain_lineEdit->setText(QString::number(gain, 10, 2)); + ui.GainSlider->setValue(gain); +} + +void HyperImagerControl::onFramerateLineEditEditingFinished() +{ + double value = ui.framerate_lineEdit->text().toDouble(); + ui.FramerateSlider->setValue(value); + emit framerateChanged(value); +} + +void HyperImagerControl::onFramerateSliderChanged(double framerate) +{ + ui.framerate_lineEdit->setText(QString::number(framerate)); +} + +void HyperImagerControl::onFramerateSliderReleased() +{ + double framerate = ui.framerate_lineEdit->text().toDouble(); + emit framerateChanged(framerate); +} + +void HyperImagerControl::onIntegrationTimeLineEditEditingFinished() +{ + double value = ui.integratioin_time_lineEdit->text().toDouble(); + ui.IntegratioinTimeSlider->setValue(value); + emit integrationTimeChanged(value); +} + +void HyperImagerControl::onIntegrationTimeSliderChanged(double integrationTime) +{ + ui.integratioin_time_lineEdit->setText(QString::number(integrationTime)); +} + +void HyperImagerControl::onIntegrationTimeSliderReleased() +{ + double integrationTime = ui.integratioin_time_lineEdit->text().toDouble(); + emit integrationTimeChanged(integrationTime); +} + +void HyperImagerControl::onGainLineEditEditingFinished() +{ + double value = ui.gain_lineEdit->text().toDouble(); + ui.GainSlider->setValue(value); + emit gainChanged(value); +} + +void HyperImagerControl::onGainSliderChanged(double gain) +{ + ui.gain_lineEdit->setText(QString::number(gain)); +} + +void HyperImagerControl::onGainSliderReleased() +{ + double gain = ui.gain_lineEdit->text().toDouble(); + emit gainChanged(gain); +} + +void HyperImagerControl::CalculateIntegratioinTimeRange(double frameRate) +{ + double range = 1 / frameRate * 1000;// + + ui.IntegratioinTimeSlider->blockSignals(true);//ΪsetMaximumᴥvalueChangedźţԵsetMaximumǰҪź + ui.IntegratioinTimeSlider->setMaximum(range); + ui.IntegratioinTimeSlider->blockSignals(false); +} diff --git a/HPPA/HyperImagerControl.h b/HPPA/HyperImagerControl.h new file mode 100644 index 0000000..6a6b92d --- /dev/null +++ b/HPPA/HyperImagerControl.h @@ -0,0 +1,47 @@ +#pragma once + +#include + +#include "ui_hyperImagerControl.h" + +#include "AspectRatioLabel.h" + +class QDoubleSlider; + +class HyperImagerControl : public QDialog +{ + Q_OBJECT + +public: + HyperImagerControl(QWidget* parent = nullptr); + ~HyperImagerControl(); + + AspectRatioLabel* imagerPictureLabel() const { return ui.imagerPictureLabel; } + + void setFrameRate(double frameRate); + 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 onFramerateSliderChanged(double framerate); + void onFramerateSliderReleased(); + + void onIntegrationTimeLineEditEditingFinished(); + void onIntegrationTimeSliderChanged(double integrationTime); + void onIntegrationTimeSliderReleased(); + + void onGainLineEditEditingFinished(); + void onGainSliderChanged(double gain); + void onGainSliderReleased(); + +private: + Ui::HyperImagerControl ui; +}; diff --git a/HPPA/QDoubleSlider.cpp b/HPPA/QDoubleSlider.cpp index 3e98fa5..68ffedf 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(100.0) +m_Multiplier(1.0) { connect(this, SIGNAL(valueChanged(int)), this, SLOT(notifyValueChanged(int))); diff --git a/HPPA/hyperImagerControl.ui b/HPPA/hyperImagerControl.ui new file mode 100644 index 0000000..1f1241f --- /dev/null +++ b/HPPA/hyperImagerControl.ui @@ -0,0 +1,351 @@ + + + HyperImagerControl + + + + 0 + 0 + 462 + 385 + + + + Color Adjust + + + QGroupBox +{ + border: 12px solid transparent; + /*border-top: 12px solid transparent; + border-right: 0px solid transparent; + border-bottom: 0px solid transparent; + border-left: 0px solid transparent;*/ + color: #ACCDFF; +} + +QPushButton +{ + /*width: 172px; + height: 56px;*/ + font: 10pt "新宋体"; + background-color: qlineargradient( + spread:pad, + x1:0.5, y1:0, x2:0.5, y2:1, + stop:0 #283D86, + stop:1 #0F1A40 + ); + color: white; + border: none; + padding: 8px 8px; + border-radius: 4px; +} +QPushButton:hover +{ + background-color: qlineargradient( + spread:pad, + x1:0, y1:0, x2:1, y2:0, + stop:0 #3A4875, + stop:1 #5F6B91 + ); +} +/* 按下时的效果 */ +QPushButton:pressed +{ + background-color: qlineargradient( + spread:pad, + x1:0, y1:0, x2:1, y2:0, + stop:0 #1A254F, + stop:1 #3A466B + ); + /* 可选:添加下压效果 */ + padding-top: 9px; + padding-bottom: 7px; +} + +QLabel { + color: rgb(255, 255, 255); +} + +QSlider::groove:horizontal { + height: 10px; + background: #1e2a44; + border-radius: 3px; +} + +/* 已滑过:渐变蓝 */ +QSlider::sub-page:horizontal { + background: qlineargradient( + x1:0, y1:0, x2:1, y2:0, + stop:0 #1f4fff, + stop:0.5 #2f6bff, + stop:1 #5fa0ff + ); + border-radius: 3px; +} + +/* 未滑过 */ +QSlider::add-page:horizontal { + height: 10px; + background: #2a3550; + border-radius: 3px; +} + +/* ===== 滑块按钮 ===== */ +QSlider::handle:horizontal { + width: 15px; + height: 10px; + + /* 蓝色实心 */ + background: #2f6bff; + + /* 白色外圈 */ + border: 2px solid #ffffff; + border-radius: 5px; + + /* 垂直居中 */ + margin: -5px 0; +} + +/* 悬停 */ +QSlider::handle:horizontal:hover { + background: #4d8dff; +} + +/* 按下 */ +QSlider::handle:horizontal:pressed { + background: #1f4fff; +} + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 10 + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + color: rgb(255, 255, 255); + + + 帧率 + + + Qt::AlignCenter + + + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + color: rgb(255, 255, 255); + + + 积分时间 + + + Qt::AlignCenter + + + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + color: rgb(255, 255, 255); + + + gain + + + Qt::AlignCenter + + + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + + + + + + + + + QDoubleSlider + QSlider +
qdoubleslider.h
+
+ + AspectRatioLabel + QLabel +
AspectRatioLabel.h
+
+
+ + +