美化:

工具栏+图像控制看板
This commit is contained in:
tangchao0503
2026-03-17 14:47:17 +08:00
parent 30fa211a22
commit 4af1187b7d
6 changed files with 292 additions and 46 deletions

View File

@ -31,6 +31,8 @@ HPPA::HPPA(QWidget* parent)
s_instance = this;
ui.setupUi(this);
setWindowFlags(Qt::FramelessWindowHint);
// register MapLayer* metatype for queued signal/slot across threads
qRegisterMetaType<MapLayer*>("MapLayer*");
@ -635,6 +637,7 @@ void HPPA::initMenubarToolbar()
hLayout_menuWidget->addStretch();
QPushButton* closeBtn = new QPushButton(QString::fromLocal8Bit("退出平台"));
connect(closeBtn, SIGNAL(released()), this, SLOT(onExit()));
closeBtn->setStyleSheet(R"(
QPushButton {
background: #002CE0;
@ -655,7 +658,7 @@ void HPPA::initMenubarToolbar()
//QToolBar* toolBar = this->findChild<QToolBar*>("mainToolBar");
QToolBar* toolBar = ui.mainToolBar;
//hLayout_toolBarWidget->addWidget(toolBar);
hLayout_toolBarWidget->addWidget(toolBar);
toolBar->setAttribute(Qt::WA_TranslucentBackground, true);
toolBar->setAutoFillBackground(false);
toolBar->setIconSize(QSize(56, 56));
@ -665,24 +668,96 @@ void HPPA::initMenubarToolbar()
frame_number->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}");
frame_number->setMaximumWidth(100);
frame_number->setText("5000");
frame_number->setStyleSheet(R"(
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;
}
)");
QAction* action = ui.mainToolBar->insertWidget(ui.action_start_recording, frame_number);
m_FilenameLineEdit = new QLineEdit(ui.mainToolBar);
m_FilenameLineEdit->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}");
m_FilenameLineEdit->setMaximumWidth(100);
m_FilenameLineEdit->setText("tmp_image");
m_FilenameLineEdit->setStyleSheet(R"(
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;
}
)");
QAction* action1 = ui.mainToolBar->insertWidget(ui.action_start_recording, m_FilenameLineEdit);
ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager.png"));
ui.action_auto_exposure->setIcon(QIcon(".//icon//all//exposure.png"));
ui.action_focus->setIcon(QIcon(".//icon//all//focus.png"));
ui.action_dark->setIcon(QIcon(".//icon//all//dark.png"));
ui.action_reference->setIcon(QIcon(".//icon//all//reference.png"));
QWidget* spacer = new QWidget();
spacer->setFixedWidth(10); // 间距大小自己调
ui.mainToolBar->insertWidget(action1, spacer);
QAction* sepAction = ui.mainToolBar->insertSeparator(ui.mActionPan);
QWidget* sepWidget = ui.mainToolBar->widgetForAction(sepAction);
if (sepWidget) {
//sepWidget->setFixedWidth(15); // 调整宽度
sepWidget->setStyleSheet("background-color: #2C586C;"); // 调整颜色
}
ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager.svg"));
ui.action_auto_exposure->setIcon(QIcon(".//icon//all//exposure.svg"));
ui.action_focus->setIcon(QIcon(".//icon//all//focus.svg"));
ui.action_dark->setIcon(QIcon(".//icon//all//dark.svg"));
ui.action_reference->setIcon(QIcon(".//icon//all//reference.svg"));
ui.action_start_recording->setIcon(QIcon(".//icon//all//record.svg"));
ui.actionOpenDirectory->setIcon(QIcon(".//icon//all//openDirectory.svg"));
ui.mActionPan->setIcon(QIcon(".//icon//all//pan.svg"));
ui.mActionSpectral->setIcon(QIcon(".//icon//all//spectral.svg"));
connect(ui.mActionPan, &QAction::toggled, this, [=](bool checked) {
if (checked)
ui.mActionPan->setIcon(QIcon(".//icon//all//pan_done.svg"));
else
ui.mActionPan->setIcon(QIcon(".//icon//all//pan.svg"));
});
connect(ui.mActionSpectral, &QAction::toggled, this, [=](bool checked) {
if (checked)
ui.mActionSpectral->setIcon(QIcon(".//icon//all//spectral_done.svg"));
else
ui.mActionSpectral->setIcon(QIcon(".//icon//all//spectral.svg"));
});
// 使用样式表设置透明背景
toolBar->setStyleSheet(R"(
QToolBar {
background: #0D1233;/*transparent*/
border: 1px solid #444;
border: 1px solid #2C586C;
border-radius: 6px;
}
QToolButton {
@ -700,7 +775,7 @@ ui.action_dark->setIcon(QIcon(".//icon//all//dark.png"));
topWidget->setStyleSheet("background-color: #040125;");
QVBoxLayout* verticalLayout_topWidget = new QVBoxLayout(topWidget);
verticalLayout_topWidget->addWidget(menuWidget);
//verticalLayout_topWidget->addWidget(toolBarWidget);
verticalLayout_topWidget->addWidget(toolBarWidget);
setMenuWidget(topWidget);
}
@ -771,7 +846,8 @@ void HPPA::recordFromRobotArm(int fileCounter)
m_Imager->setRecordControlState(false);
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
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);}");
//qDebug() << "recordFromRobotArm: 1111111111111111111111";
return;
@ -787,7 +863,8 @@ void HPPA::recordFromRobotArm(int fileCounter)
emit StartRecordSignal();
ui.action_start_recording->setText(QString::fromLocal8Bit("采集中"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
ui.action_start_recording->setIcon(QIcon(".//icon//all//record_ing.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
//qDebug() << "recordFromRobotArm: 2222222222222222222222";
}
@ -1214,7 +1291,8 @@ void HPPA::onStartRecordStep1()
emit StartRecordSignal();//发射开始采集信号
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
ui.action_start_recording->setIcon(QIcon(".//icon//all//record_ing.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
}
else
{
@ -1222,7 +1300,8 @@ void HPPA::onStartRecordStep1()
m_RecordState -= 1;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
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;
}
@ -1236,7 +1315,8 @@ void HPPA::onStartRecordStep1()
removeAllLayersInRasterGroup();
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
ui.action_start_recording->setIcon(QIcon(".//icon//all//record_ing.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
//应该先控制马达运动,当马达运动后,再开始光谱仪采集(发射开始采集信号)
m_Imager->setFileName2Save(imgPath);
@ -1250,7 +1330,8 @@ void HPPA::onStartRecordStep1()
m_RecordState -= 1;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
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;
}
@ -1270,7 +1351,8 @@ void HPPA::onStartRecordStep1()
m_tmc->run();
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
ui.action_start_recording->setIcon(QIcon(".//icon//all//record_ing.svg"));
//ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(255,0,0);}");
}
else
{
@ -1279,7 +1361,8 @@ void HPPA::onStartRecordStep1()
m_RecordState--;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
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;
@ -1588,6 +1671,27 @@ void HPPA::onExit()
this->close();
}
void HPPA::closeEvent(QCloseEvent* event)
{
QMessageBox::StandardButton ret;
ret = QMessageBox::question(
this,
QString::fromLocal8Bit("退出确认"),
QString::fromLocal8Bit("确定要退出程序吗?"),
QMessageBox::Yes | QMessageBox::No
);
if (ret == QMessageBox::Yes)
{
event->accept(); // 允许关闭
}
else
{
event->ignore(); // 取消关闭
}
}
void HPPA::onOpenImg()
{
// 1) 弹出文件对话框获取uri
@ -1648,16 +1752,22 @@ void HPPA::onconnect()
return;
}
ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager_ing.svg"));
m_Imager->moveToThread(m_RecordThread);
m_RecordThread->start();
m_Imager->connect_imager(frame_number->text().toInt());
m_Imager->setFileName2Save(m_FilenameLineEdit->text().toStdString());
connect(m_Imager, SIGNAL(PlotSignal(int, int, QString)), this, SLOT(onPlotHyperspectralImageRgbImage(int, int, QString)));
connect(m_Imager, SIGNAL(RecordFinishedSignal_WhenFrameNumberMeet()), this, SLOT(onRecordFinishedSignal_WhenFrameNumberMeet()));
connect(m_Imager, SIGNAL(RecordFinishedSignal_WhenFrameNumberNotMeet()), this, SLOT(onRecordFinishedSignal_WhenFrameNumberNotMeet()));
connect(m_Imager, SIGNAL(SpectralSignal(int)), this, SLOT(PlotSpectral(int)));
//connect(m_Imager, SIGNAL(testImagerStatus()), this, SLOT(testImagerStatus()));
connect(m_Imager, SIGNAL(testImagerStatus()), this, SLOT(testImagerStatus()));
connect(m_Imager, &ImagerOperationBase::autoExposureSignal, this, &HPPA::autoExposureFinished);
m_Imager->connect_imager(frame_number->text().toInt());
m_Imager->setFileName2Save(m_FilenameLineEdit->text().toStdString());
//文件拷贝
m_CopyFileThread = new QThread();
@ -1729,6 +1839,8 @@ void HPPA::onconnect()
}
catch (std::exception const& e)
{
ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager.svg"));
std::cerr << "Error: " << e.what() << std::endl;
delete m_Imager;
@ -1745,19 +1857,25 @@ void HPPA::onconnect()
void HPPA::testImagerStatus()
{
m_TestImagerStausThread->start();
ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager_done.svg"));
//m_TestImagerStausThread->start();
}
void HPPA::autoExposureFinished()
{
ui.action_auto_exposure->setIcon(QIcon(".//icon//all//exposure_done.svg"));
}
void HPPA::onAutoExposure()
{
ui.action_auto_exposure->setIcon(QIcon(".//icon//all//exposure_ing.svg"));
double ReturnedExposureTime = m_Imager->auto_exposure();
//将自动曝光所得的值显示到界面
ui.IntegratioinTimeSlider->setValue(ReturnedExposureTime, false);
ui.mainToolBar->widgetForAction(ui.action_auto_exposure)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
//ui.mainToolBar->widgetForAction(ui.action_auto_exposure)->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}");
//ui.mainToolBar->widgetForAction(ui.action_auto_exposure)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
void HPPA::onFocus1()
@ -1812,6 +1930,8 @@ void HPPA::onDark()
msgBox.setText(QString::fromLocal8Bit("采集暗电流,请确保镜头盖盖上!"));
msgBox.exec();
ui.action_dark->setIcon(QIcon(".//icon//all//dark_ing.svg"));
QAction* checked = moveplatformActionGroup->checkedAction();
QString checkedName = checked->objectName();
if (checkedName == "mAction_is_no_motor" || checkedName == "mAction_RobotArm")
@ -1833,7 +1953,8 @@ void HPPA::onDark()
void HPPA::recordDarkFinish()
{
ui.mainToolBar->widgetForAction(ui.action_dark)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
ui.action_dark->setIcon(QIcon(".//icon//all//dark_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_dark)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
void HPPA::onReference()
@ -1842,6 +1963,8 @@ void HPPA::onReference()
msgBox.setText(QString::fromLocal8Bit("请确保白板放置正确!"));
msgBox.exec();
ui.action_reference->setIcon(QIcon(".//icon//all//reference_ing.svg"));
QAction* checked = moveplatformActionGroup->checkedAction();
QString checkedName = checked->objectName();
if (checkedName == "mAction_is_no_motor" || checkedName == "mAction_RobotArm")
@ -1863,7 +1986,8 @@ void HPPA::onReference()
void HPPA::recordWhiteFinish()
{
ui.mainToolBar->widgetForAction(ui.action_reference)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
ui.action_reference->setIcon(QIcon(".//icon//all//reference_done.svg"));
//ui.mainToolBar->widgetForAction(ui.action_reference)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
void HPPA::onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QString filePath)
@ -2000,7 +2124,8 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberMeet()
std::cout << "停止采集原因:帧数采集完了。" << std::endl;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
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);}");
m_RecordState++;//当自动停止采集
}
@ -2023,7 +2148,8 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
std::cout << "停止采集原因1帧数没有采集够时马达到达最大位置2手动停止采集。" << std::endl;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
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);}");
m_RecordState++;
}
@ -2031,7 +2157,8 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
void HPPA::onsequenceComplete()
{
ui.action_start_recording->setText(QString::fromLocal8Bit("采集"));
ui.mainToolBar->widgetForAction(ui.action_start_recording)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
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);}");
m_RecordState++;
}

View File

@ -296,6 +296,7 @@ public Q_SLOTS:
void onOpenImg();
void onconnect();//连接相机
void testImagerStatus();//获取相机状态:连接是否正常
void autoExposureFinished();
void onAutoExposure();
void onFocus1();
void onFocus2(int command);
@ -351,6 +352,9 @@ public Q_SLOTS:
void onMapToolPanTriggered();
void onMapToolSpectralTriggered();
protected:
void closeEvent(QCloseEvent* event) override;
signals:
void StartFocusSignal();
void StartRecordSignal();

View File

@ -197,15 +197,13 @@ QToolBar QToolButton:hover {
<addaction name="action_reference"/>
<addaction name="action_start_recording"/>
<addaction name="actionOpenDirectory"/>
<addaction name="mActionPan"/>
<addaction name="mActionSpectral"/>
</widget>
<widget class="QStatusBar" name="statusBar">
<property name="styleSheet">
<string notr="true">QStatusBar {
background-color: rgb(255, 255, 255);
color: white; /* 文字颜色 */
border-top: 1px solid #ccc; /* 顶部边框 */
padding: 5px; /* 内边距 */
background-color: #0D1233;
}
</string>
</property>
@ -816,18 +814,83 @@ QPushButton:pressed
</layout>
</widget>
</widget>
<widget class="QToolBar" name="mapToolBar">
<widget class="QToolBar" name="toolBar">
<property name="minimumSize">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>图像查看</string>
<string>toolBar</string>
</property>
<property name="styleSheet">
<string notr="true">QToolBar {
background: #040125;/*transparent*/
border: 1px solid #040125;
}</string>
</property>
<property name="movable">
<bool>false</bool>
</property>
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
<enum>LeftToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QToolBar" name="toolBar_2">
<property name="minimumSize">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>toolBar_2</string>
</property>
<property name="styleSheet">
<string notr="true">QToolBar {
background: #040125;/*transparent*/
border: 1px solid #040125;
}</string>
</property>
<property name="movable">
<bool>false</bool>
</property>
<attribute name="toolBarArea">
<enum>RightToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QToolBar" name="toolBar_3">
<property name="minimumSize">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
<property name="windowTitle">
<string>toolBar_3</string>
</property>
<property name="styleSheet">
<string notr="true">QToolBar {
background: #040125;/*transparent*/
border: 1px solid #040125;
}</string>
</property>
<property name="movable">
<bool>false</bool>
</property>
<attribute name="toolBarArea">
<enum>BottomToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="mActionPan"/>
<addaction name="mActionSpectral"/>
</widget>
<action name="action_exit">
<property name="text">

View File

@ -67,6 +67,8 @@ double ImagerOperationBase::auto_exposure()
imagerStopCollect();
emit autoExposureSignal();
//std::cout << "<22>Զ<EFBFBD><D4B6>ع⣺" << getIntegrationTime() << std::endl;
return getIntegrationTime();

View File

@ -114,6 +114,7 @@ signals:
void testImagerStatus();//<2F><>ʾ<EFBFBD><CABE><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void autoExposureSignal();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ӱ<EFBFBD><D3B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>.bil/.hdr<64><72>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ɺ󷢳<C9BA><F3B7A2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳɼ<D3B2><C9BC>̷߳<DFB3><CCB7><EFBFBD><EFBFBD><EFBFBD>Qt <20><><EFBFBD><EFBFBD> queued connection<6F><6E>
void ImageFileSaved(const QString& path, int fileIndex);

View File

@ -14,7 +14,56 @@
<string>Color Adjust</string>
</property>
<property name="styleSheet">
<string notr="true">QLabel {
<string notr="true">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: 19pt &quot;新宋体&quot;;
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 16px;
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);
}
@ -185,15 +234,15 @@ QSlider::handle:horizontal:pressed {
<property name="title">
<string>预设</string>
</property>
<layout class="QVBoxLayout" name="presetLayout">
<item>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QPushButton" name="btnTrueColor">
<property name="text">
<string>真彩色</string>
</property>
</widget>
</item>
<item>
<item row="0" column="1">
<widget class="QPushButton" name="btnColorInfrared">
<property name="text">
<string>假彩色</string>