@ -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 : # 002 CE0 ;
@ -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 : # 142 D7F ;
color : # e6eeff ;
border : 1 px solid # 2f 6 bff ;
border - radius : 6 px ;
padding : 4 px 8 px ;
min - width : 70 px ;
min - height : 20 px ;
font - size : 13 px ;
}
QLineEdit : hover {
border : 1 px solid # 4 d8dff ;
}
QLineEdit : focus {
border : 1 px solid # 6 aa2ff ;
background - color : # 23345 c ;
}
) " );
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 : # 142 D7F ;
color : # e6eeff ;
border : 1 px solid # 2f 6 bff ;
border - radius : 6 px ;
padding : 4 px 8 px ;
min - width : 70 px ;
min - height : 20 px ;
font - size : 13 px ;
}
QLineEdit : hover {
border : 1 px solid # 4 d8dff ;
}
QLineEdit : focus {
border : 1 px solid # 6 aa2ff ;
background - color : # 23345 c ;
}
) " );
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 ( QIc on( " .//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 ( acti on1 , 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 : # 0 D1233 ; /*transparent*/
border : 1 px solid # 444 ;
border : 1 px solid # 2 C586C ;
border - radius : 6 px ;
}
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 ) ;
@ -1247,10 +1327,11 @@ void HPPA::onStartRecordStep1()
else
{
m_omc - > stop ( ) ;
m_RecordState - = 1 ;
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 - > setText ( QString : : fromLocal8Bit ( " 采集 " ) ) ;
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,14 +1953,17 @@ void HPPA::onDark()
void HPPA : : recordDarkFinish ( )
{
ui . mainToolB ar- > widgetForAction ( ui . action_dark ) - > setStyleSheet ( " QWidget{background-color:rgb(0,255,0);} " ) ;
ui . action_d ark - > setIcon ( QIcon ( " .//icon//all//dark_done.svg " ) ) ;
//ui.mainToolBar->widgetForAction(ui.action_dark)->setStyleSheet("QWidget{background-color:rgb(0,255,0);}");
}
void HPPA : : onReference ( )
{
QMessageBox msgBox ;
msgBox . setText ( QString : : fromLocal8Bit ( " 请确保白板放置正确! " ) ) ;
msgBox . exec ( ) ;
msgBox . exec ( ) ;
ui . action_reference - > setIcon ( QIcon ( " .//icon//all//reference_ing.svg " ) ) ;
QAction * checked = moveplatformActionGroup - > checkedAction ( ) ;
QString checkedName = checked - > objectName ( ) ;
@ -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 + + ;
}