diff --git a/src/src/Common/QGlobals.h b/src/src/Common/QGlobals.h index ad49331..d9f7cf0 100644 --- a/src/src/Common/QGlobals.h +++ b/src/src/Common/QGlobals.h @@ -1,4 +1,6 @@ -#pragma once +#ifndef OMEGAV_QGLOBALS_H +#define OMEGAV_QGLOBALS_H + #include #include #include @@ -10,6 +12,7 @@ #include #include #include +#include "Events/EventsCenter.h" #include #include @@ -18,11 +21,11 @@ #include "IO/DICOM/ExtendMedicalImageProperties.h" using namespace std; -// ����汾 +// #define Project_NAME "EquilibriumNine DicomViewer" #define Project_VER "1.0.0.0" -//�����Ϣ +// #define Project_OrganizationName "EquilibriumNine" #define Project_OrganizationDomain "" @@ -318,6 +321,7 @@ public: static void setSyncState(SyncState curState) { _syc_state = curState; + EventsCenter::TriggerEvent(SyncStateChanged); } static const QString SyncStateName[SYNC_STATE_NUM];// = { "AUTO_SYNC","MANUAL_SYNC","DIS_SYNC" }; static const QString SyncItemName[SYNC_ITEM_NUM];// = { "SLICE_LOC","ZOOM_PAN","WIDTH_LEVEL" }; @@ -362,3 +366,4 @@ typedef struct PatientInfo } }PatientInfo_t; typedef std::map PatientsMapType; +#endif OMEGAV_QGLOBALS_H diff --git a/src/src/Events/vtkSignalRaiser.h b/src/src/Events/vtkSignalRaiser.h index 27c57d6..cc3378d 100644 --- a/src/src/Events/vtkSignalRaiser.h +++ b/src/src/Events/vtkSignalRaiser.h @@ -13,7 +13,6 @@ Q_OBJECT public : void raise(vtkObject *sender, unsigned long eventId, void *callData = nullptr); signals: - void raiseEvent(vtkObject *sender, unsigned long eventId, void *callData = nullptr); diff --git a/src/src/UI/Window/QDicomViewer.cpp b/src/src/UI/Window/QDicomViewer.cpp index 3777230..9bb9eee 100644 --- a/src/src/UI/Window/QDicomViewer.cpp +++ b/src/src/UI/Window/QDicomViewer.cpp @@ -171,8 +171,11 @@ void QDicomViewer::createToolButton() { this->SetupMinimizeTool(btnminimize); this->SetupCloseTool(btnclose); - connect(btnMPR, &QToolButton::clicked, ui->viewContainer->getViewManager(), - &ImageViewManager::switchSliceOrientation); + connect(btnMPR, &QToolButton::clicked, [=](){ + ui->viewContainer->getViewManager()->switchSliceOrientation(); + SyncHelper::setSyncState(DIS_SYNC); + syncStateChanged(); + }); } void QDicomViewer::SetupFullScreenTool(QToolButton *btnfullscreen) { @@ -482,7 +485,8 @@ void QDicomViewer::SetupFlipTool(QToolButton *flipBtn) { } //视窗操作,sync mode -void QDicomViewer::SetupSyncTool(QToolButton *syncBtn) { +void QDicomViewer::SetupSyncTool(QToolButton *btn) { + syncBtn = btn; syncBtn->setToolTip(QString("Toggle series synchronization")); // Menu QMenu * m = new QMenu(this); @@ -513,35 +517,20 @@ void QDicomViewer::SetupSyncTool(QToolButton *syncBtn) { //loop click connect(syncBtn, &QToolButton::clicked, this, - &QDicomViewer::syncStateChanged); + &QDicomViewer::switchSyncState); + connect(EventsCenter::Default(), &EventsCenter::SyncStateChanged, this, &QDicomViewer::syncStateChanged); +} + +void QDicomViewer::switchSyncState(){ + SyncHelper::setSyncState((SyncState)((SyncHelper::getSyncState()+1)%3)); } void QDicomViewer::syncStateChanged() const { - QToolButton* syncBtn = qobject_cast(sender()); - SyncState curst = SyncHelper::getSyncState(); - switch (curst) { + if (!syncBtn) return; + switch (SyncHelper::getSyncState()) { case AUTO_SYNC: - syncBtn->setIcon(icon_manual); - m_sync_state_action->setText(QString(tr("CUR STATE: %1")).arg(SyncHelper::SyncStateName[MANUAL_SYNC])); - - SyncHelper::setSyncState(MANUAL_SYNC); - m_sync_item_action[SLICE_POS]->setChecked(SyncHelper::getSyncItem(SLICE_POS)); - m_sync_item_action[WIDTH_LEVEL]->setChecked(SyncHelper::getSyncItem(WIDTH_LEVEL)); - m_sync_item_action[ZOOM_PAN]->setChecked(SyncHelper::getSyncItem(ZOOM_PAN)); - break; - case MANUAL_SYNC: - syncBtn->setIcon(icon_dis); - m_sync_state_action->setText(QString(tr("CUR STATE: %1")).arg(SyncHelper::SyncStateName[DIS_SYNC])); - SyncHelper::setSyncState(DIS_SYNC); - for (int i = 0; i < SYNC_ITEM_NUM; i++) { - m_sync_item_action[i]->setChecked(false); - m_sync_item_action[i]->setDisabled(true); - } - break; - case DIS_SYNC: syncBtn->setIcon(icon_auto); m_sync_state_action->setText(QString(tr("CUR STATE: %1")).arg(SyncHelper::SyncStateName[AUTO_SYNC])); - SyncHelper::setSyncState(AUTO_SYNC); for (int i = 0; i < SYNC_ITEM_NUM; i++) { m_sync_item_action[i]->setDisabled(false); } @@ -549,6 +538,23 @@ void QDicomViewer::syncStateChanged() const { m_sync_item_action[WIDTH_LEVEL]->setChecked(SyncHelper::getSyncItem(WIDTH_LEVEL)); m_sync_item_action[ZOOM_PAN]->setChecked(SyncHelper::getSyncItem(ZOOM_PAN)); break; + + case MANUAL_SYNC:{ + syncBtn->setIcon(icon_manual); + m_sync_state_action->setText(QString(tr("CUR STATE: %1")).arg(SyncHelper::SyncStateName[MANUAL_SYNC])); + m_sync_item_action[SLICE_POS]->setChecked(SyncHelper::getSyncItem(SLICE_POS)); + m_sync_item_action[WIDTH_LEVEL]->setChecked(SyncHelper::getSyncItem(WIDTH_LEVEL)); + m_sync_item_action[ZOOM_PAN]->setChecked(SyncHelper::getSyncItem(ZOOM_PAN)); + break; + } + case DIS_SYNC: + syncBtn->setIcon(icon_dis); + m_sync_state_action->setText(QString(tr("CUR STATE: %1")).arg(SyncHelper::SyncStateName[DIS_SYNC])); + for (int i = 0; i < SYNC_ITEM_NUM; i++) { + m_sync_item_action[i]->setChecked(false); + m_sync_item_action[i]->setDisabled(true); + } + break; default: break; } diff --git a/src/src/UI/Window/QDicomViewer.h b/src/src/UI/Window/QDicomViewer.h index 3ccd410..f37f276 100644 --- a/src/src/UI/Window/QDicomViewer.h +++ b/src/src/UI/Window/QDicomViewer.h @@ -105,6 +105,7 @@ private: QIcon icon_manual; QIcon icon_auto; QIcon icon_dis; + QToolButton* syncBtn = nullptr; QAction *m_sync_item_action[SYNC_ITEM_NUM]; QAction* m_sync_state_action; QAction* m_measure_hidden_action; @@ -124,4 +125,6 @@ private: AnnotationActorType m_cur_measure = AnnotationActorType::RulerAnn; void syncStateChanged() const; + void switchSyncState(); + };