美化:

工具栏+图像控制看板
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; s_instance = this;
ui.setupUi(this); ui.setupUi(this);
setWindowFlags(Qt::FramelessWindowHint);
// register MapLayer* metatype for queued signal/slot across threads // register MapLayer* metatype for queued signal/slot across threads
qRegisterMetaType<MapLayer*>("MapLayer*"); qRegisterMetaType<MapLayer*>("MapLayer*");
@ -635,6 +637,7 @@ void HPPA::initMenubarToolbar()
hLayout_menuWidget->addStretch(); hLayout_menuWidget->addStretch();
QPushButton* closeBtn = new QPushButton(QString::fromLocal8Bit("退出平台")); QPushButton* closeBtn = new QPushButton(QString::fromLocal8Bit("退出平台"));
connect(closeBtn, SIGNAL(released()), this, SLOT(onExit()));
closeBtn->setStyleSheet(R"( closeBtn->setStyleSheet(R"(
QPushButton { QPushButton {
background: #002CE0; background: #002CE0;
@ -655,7 +658,7 @@ void HPPA::initMenubarToolbar()
//QToolBar* toolBar = this->findChild<QToolBar*>("mainToolBar"); //QToolBar* toolBar = this->findChild<QToolBar*>("mainToolBar");
QToolBar* toolBar = ui.mainToolBar; QToolBar* toolBar = ui.mainToolBar;
//hLayout_toolBarWidget->addWidget(toolBar); hLayout_toolBarWidget->addWidget(toolBar);
toolBar->setAttribute(Qt::WA_TranslucentBackground, true); toolBar->setAttribute(Qt::WA_TranslucentBackground, true);
toolBar->setAutoFillBackground(false); toolBar->setAutoFillBackground(false);
toolBar->setIconSize(QSize(56, 56)); toolBar->setIconSize(QSize(56, 56));
@ -665,24 +668,96 @@ void HPPA::initMenubarToolbar()
frame_number->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}"); frame_number->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}");
frame_number->setMaximumWidth(100); frame_number->setMaximumWidth(100);
frame_number->setText("5000"); 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); QAction* action = ui.mainToolBar->insertWidget(ui.action_start_recording, frame_number);
m_FilenameLineEdit = new QLineEdit(ui.mainToolBar); m_FilenameLineEdit = new QLineEdit(ui.mainToolBar);
m_FilenameLineEdit->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}"); m_FilenameLineEdit->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}");
m_FilenameLineEdit->setMaximumWidth(100); m_FilenameLineEdit->setMaximumWidth(100);
m_FilenameLineEdit->setText("tmp_image"); 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); QAction* action1 = ui.mainToolBar->insertWidget(ui.action_start_recording, m_FilenameLineEdit);
ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager.png")); QWidget* spacer = new QWidget();
ui.action_auto_exposure->setIcon(QIcon(".//icon//all//exposure.png")); spacer->setFixedWidth(10); // 间距大小自己调
ui.action_focus->setIcon(QIcon(".//icon//all//focus.png")); ui.mainToolBar->insertWidget(action1, spacer);
ui.action_dark->setIcon(QIcon(".//icon//all//dark.png"));
ui.action_reference->setIcon(QIcon(".//icon//all//reference.png"));
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"( toolBar->setStyleSheet(R"(
QToolBar { QToolBar {
background: #0D1233;/*transparent*/ background: #0D1233;/*transparent*/
border: 1px solid #444; border: 1px solid #2C586C;
border-radius: 6px; border-radius: 6px;
} }
QToolButton { QToolButton {
@ -700,7 +775,7 @@ ui.action_dark->setIcon(QIcon(".//icon//all//dark.png"));
topWidget->setStyleSheet("background-color: #040125;"); topWidget->setStyleSheet("background-color: #040125;");
QVBoxLayout* verticalLayout_topWidget = new QVBoxLayout(topWidget); QVBoxLayout* verticalLayout_topWidget = new QVBoxLayout(topWidget);
verticalLayout_topWidget->addWidget(menuWidget); verticalLayout_topWidget->addWidget(menuWidget);
//verticalLayout_topWidget->addWidget(toolBarWidget); verticalLayout_topWidget->addWidget(toolBarWidget);
setMenuWidget(topWidget); setMenuWidget(topWidget);
} }
@ -771,7 +846,8 @@ void HPPA::recordFromRobotArm(int fileCounter)
m_Imager->setRecordControlState(false); m_Imager->setRecordControlState(false);
ui.action_start_recording->setText(QString::fromLocal8Bit("采集")); 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"; //qDebug() << "recordFromRobotArm: 1111111111111111111111";
return; return;
@ -787,7 +863,8 @@ void HPPA::recordFromRobotArm(int fileCounter)
emit StartRecordSignal(); emit StartRecordSignal();
ui.action_start_recording->setText(QString::fromLocal8Bit("采集中")); 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"; //qDebug() << "recordFromRobotArm: 2222222222222222222222";
} }
@ -1214,7 +1291,8 @@ void HPPA::onStartRecordStep1()
emit StartRecordSignal();//发射开始采集信号 emit StartRecordSignal();//发射开始采集信号
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集")); 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 else
{ {
@ -1222,7 +1300,8 @@ void HPPA::onStartRecordStep1()
m_RecordState -= 1; m_RecordState -= 1;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集")); 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; return;
} }
@ -1236,7 +1315,8 @@ void HPPA::onStartRecordStep1()
removeAllLayersInRasterGroup(); removeAllLayersInRasterGroup();
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集")); 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); m_Imager->setFileName2Save(imgPath);
@ -1250,7 +1330,8 @@ void HPPA::onStartRecordStep1()
m_RecordState -= 1; m_RecordState -= 1;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集")); 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; return;
} }
@ -1270,7 +1351,8 @@ void HPPA::onStartRecordStep1()
m_tmc->run(); m_tmc->run();
ui.action_start_recording->setText(QString::fromLocal8Bit("停止采集")); 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 else
{ {
@ -1279,7 +1361,8 @@ void HPPA::onStartRecordStep1()
m_RecordState--; m_RecordState--;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集")); 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; return;
@ -1588,6 +1671,27 @@ void HPPA::onExit()
this->close(); 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() void HPPA::onOpenImg()
{ {
// 1) 弹出文件对话框获取uri // 1) 弹出文件对话框获取uri
@ -1648,16 +1752,22 @@ void HPPA::onconnect()
return; return;
} }
ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager_ing.svg"));
m_Imager->moveToThread(m_RecordThread); m_Imager->moveToThread(m_RecordThread);
m_RecordThread->start(); 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(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_WhenFrameNumberMeet()), this, SLOT(onRecordFinishedSignal_WhenFrameNumberMeet()));
connect(m_Imager, SIGNAL(RecordFinishedSignal_WhenFrameNumberNotMeet()), this, SLOT(onRecordFinishedSignal_WhenFrameNumberNotMeet())); connect(m_Imager, SIGNAL(RecordFinishedSignal_WhenFrameNumberNotMeet()), this, SLOT(onRecordFinishedSignal_WhenFrameNumberNotMeet()));
connect(m_Imager, SIGNAL(SpectralSignal(int)), this, SLOT(PlotSpectral(int))); 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(); m_CopyFileThread = new QThread();
@ -1729,6 +1839,8 @@ void HPPA::onconnect()
} }
catch (std::exception const& e) catch (std::exception const& e)
{ {
ui.action_connect_imager->setIcon(QIcon(".//icon//all//connect_imager.svg"));
std::cerr << "Error: " << e.what() << std::endl; std::cerr << "Error: " << e.what() << std::endl;
delete m_Imager; delete m_Imager;
@ -1745,19 +1857,25 @@ void HPPA::onconnect()
void HPPA::testImagerStatus() 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() void HPPA::onAutoExposure()
{ {
ui.action_auto_exposure->setIcon(QIcon(".//icon//all//exposure_ing.svg"));
double ReturnedExposureTime = m_Imager->auto_exposure(); double ReturnedExposureTime = m_Imager->auto_exposure();
//将自动曝光所得的值显示到界面 //将自动曝光所得的值显示到界面
ui.IntegratioinTimeSlider->setValue(ReturnedExposureTime, false); 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("QWidget{background-color:rgb(0,255,0);}");
//ui.mainToolBar->widgetForAction(ui.action_auto_exposure)->setStyleSheet("QLineEdit{background-color:rgb(255,255,255);}");
} }
void HPPA::onFocus1() void HPPA::onFocus1()
@ -1812,6 +1930,8 @@ void HPPA::onDark()
msgBox.setText(QString::fromLocal8Bit("采集暗电流,请确保镜头盖盖上!")); msgBox.setText(QString::fromLocal8Bit("采集暗电流,请确保镜头盖盖上!"));
msgBox.exec(); msgBox.exec();
ui.action_dark->setIcon(QIcon(".//icon//all//dark_ing.svg"));
QAction* checked = moveplatformActionGroup->checkedAction(); QAction* checked = moveplatformActionGroup->checkedAction();
QString checkedName = checked->objectName(); QString checkedName = checked->objectName();
if (checkedName == "mAction_is_no_motor" || checkedName == "mAction_RobotArm") if (checkedName == "mAction_is_no_motor" || checkedName == "mAction_RobotArm")
@ -1833,7 +1953,8 @@ void HPPA::onDark()
void HPPA::recordDarkFinish() 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() void HPPA::onReference()
@ -1842,6 +1963,8 @@ void HPPA::onReference()
msgBox.setText(QString::fromLocal8Bit("请确保白板放置正确!")); msgBox.setText(QString::fromLocal8Bit("请确保白板放置正确!"));
msgBox.exec(); msgBox.exec();
ui.action_reference->setIcon(QIcon(".//icon//all//reference_ing.svg"));
QAction* checked = moveplatformActionGroup->checkedAction(); QAction* checked = moveplatformActionGroup->checkedAction();
QString checkedName = checked->objectName(); QString checkedName = checked->objectName();
if (checkedName == "mAction_is_no_motor" || checkedName == "mAction_RobotArm") if (checkedName == "mAction_is_no_motor" || checkedName == "mAction_RobotArm")
@ -1863,7 +1986,8 @@ void HPPA::onReference()
void HPPA::recordWhiteFinish() 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) void HPPA::onPlotHyperspectralImageRgbImage(int fileNumber, int frameNumber, QString filePath)
@ -2000,7 +2124,8 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberMeet()
std::cout << "停止采集原因:帧数采集完了。" << std::endl; std::cout << "停止采集原因:帧数采集完了。" << std::endl;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集")); 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++;//当自动停止采集 m_RecordState++;//当自动停止采集
} }
@ -2023,7 +2148,8 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
std::cout << "停止采集原因1帧数没有采集够时马达到达最大位置2手动停止采集。" << std::endl; std::cout << "停止采集原因1帧数没有采集够时马达到达最大位置2手动停止采集。" << std::endl;
ui.action_start_recording->setText(QString::fromLocal8Bit("采集")); 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++; m_RecordState++;
} }
@ -2031,7 +2157,8 @@ void HPPA::onRecordFinishedSignal_WhenFrameNumberNotMeet()
void HPPA::onsequenceComplete() void HPPA::onsequenceComplete()
{ {
ui.action_start_recording->setText(QString::fromLocal8Bit("采集")); 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++; m_RecordState++;
} }

View File

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

View File

@ -197,16 +197,14 @@ QToolBar QToolButton:hover {
<addaction name="action_reference"/> <addaction name="action_reference"/>
<addaction name="action_start_recording"/> <addaction name="action_start_recording"/>
<addaction name="actionOpenDirectory"/> <addaction name="actionOpenDirectory"/>
<addaction name="mActionPan"/>
<addaction name="mActionSpectral"/>
</widget> </widget>
<widget class="QStatusBar" name="statusBar"> <widget class="QStatusBar" name="statusBar">
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">QStatusBar { <string notr="true">QStatusBar {
background-color: #0D1233;
background-color: rgb(255, 255, 255); }
color: white; /* 文字颜色 */
border-top: 1px solid #ccc; /* 顶部边框 */
padding: 5px; /* 内边距 */
}
</string> </string>
</property> </property>
</widget> </widget>
@ -816,18 +814,83 @@ QPushButton:pressed
</layout> </layout>
</widget> </widget>
</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"> <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> </property>
<attribute name="toolBarArea"> <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>
<attribute name="toolBarBreak"> <attribute name="toolBarBreak">
<bool>false</bool> <bool>false</bool>
</attribute> </attribute>
<addaction name="mActionPan"/>
<addaction name="mActionSpectral"/>
</widget> </widget>
<action name="action_exit"> <action name="action_exit">
<property name="text"> <property name="text">

View File

@ -67,6 +67,8 @@ double ImagerOperationBase::auto_exposure()
imagerStopCollect(); imagerStopCollect();
emit autoExposureSignal();
//std::cout << "<22>Զ<EFBFBD><D4B6>ع⣺" << getIntegrationTime() << std::endl; //std::cout << "<22>Զ<EFBFBD><D4B6>ع⣺" << getIntegrationTime() << std::endl;
return getIntegrationTime(); 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 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> // <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); void ImageFileSaved(const QString& path, int fileIndex);

View File

@ -14,7 +14,56 @@
<string>Color Adjust</string> <string>Color Adjust</string>
</property> </property>
<property name="styleSheet"> <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); color: rgb(255, 255, 255);
} }
@ -185,15 +234,15 @@ QSlider::handle:horizontal:pressed {
<property name="title"> <property name="title">
<string>预设</string> <string>预设</string>
</property> </property>
<layout class="QVBoxLayout" name="presetLayout"> <layout class="QGridLayout" name="gridLayout_2">
<item> <item row="0" column="0">
<widget class="QPushButton" name="btnTrueColor"> <widget class="QPushButton" name="btnTrueColor">
<property name="text"> <property name="text">
<string>真彩色</string> <string>真彩色</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="0" column="1">
<widget class="QPushButton" name="btnColorInfrared"> <widget class="QPushButton" name="btnColorInfrared">
<property name="text"> <property name="text">
<string>假彩色</string> <string>假彩色</string>