fix: fix toolbar state error

This commit is contained in:
kradchen
2025-07-17 16:13:34 +08:00
parent af7f39c935
commit 1ddab738d3
4 changed files with 172 additions and 77 deletions

View File

@@ -13,7 +13,7 @@
#define VTKIS_IMAGE_PAN 5 #define VTKIS_IMAGE_PAN 5
#define VTKIS_IMAGE_ZOOM 6 #define VTKIS_IMAGE_ZOOM 6
#define VTKIS_IMAGE_WINDOWLEVEL 7 #define VTKIS_IMAGE_WINDOWLEVEL 7
#define VTKIS_IMAGE_SLICE 8 #define VTKIS_IMAGE_SLICE 4
#define VTKIS_IMAGE_ROTATE3D VTKIS_ROTATE #define VTKIS_IMAGE_ROTATE3D VTKIS_ROTATE
#define VTKIS_IMAGE_ROTATE2D VTKIS_SPIN #define VTKIS_IMAGE_ROTATE2D VTKIS_SPIN
#define VTKIS_VOLUME_ROTATE3D VTKIS_ROTATE #define VTKIS_VOLUME_ROTATE3D VTKIS_ROTATE

View File

@@ -7,30 +7,52 @@
#include <QButtonGroup> #include <QButtonGroup>
#include <QActionGroup> #include <QActionGroup>
#include <QMessageBox> #include <QMessageBox>
#include "Rendering/Measure/Measure.h" #include "Rendering/Measure/Measure.h"
#include "UI/Widget/ImageView/DicomImageView.h" #include "UI/Widget/ImageView/DicomImageView.h"
#include "UI/Manager/ImageViewManager.h" #include "UI/Manager/ImageViewManager.h"
#include "Common/QGlobals.h" #include "Common/QGlobals.h"
#include "Rendering/Core/RenderingDefines.h"
#include "ExportToolButton.h" #include "ExportToolButton.h"
typedef tuple< const char *, int> ActionProperty; typedef tuple< const char *,const char *, int> ActionProperty;
namespace { namespace {
const char *SYNC_MANUAL_URL = ":/InfiniteViewer/Icon/sync/sync_manual.png"; const char *SYNC_MANUAL_URL = ":/InfiniteViewer/Icon/sync/sync_manual.png";
const char *SYNC_AUTO_URL = ":/InfiniteViewer/Icon/sync/sync_auto.png"; const char *SYNC_AUTO_URL = ":/InfiniteViewer/Icon/sync/sync_auto.png";
const char *SYNC_DIS_URL = ":/InfiniteViewer/Icon/sync/sync_dis.png"; const char *SYNC_AUTO_D_URL = ":/InfiniteViewer/Icon/sync/sync_autod.png";
const int ACTION_COUNT = 9; const char *SYNC_DIS_URL = ":/InfiniteViewer/Icon/sync/sync_dis.png";
const ActionProperty MEASURE_ACTIIONS[ACTION_COUNT] = { const char *SYNC_DIS_D_URL = ":/InfiniteViewer/Icon/sync/sync_disd.png";
{ ":/InfiniteViewer/Icon/distance.png", AnnotationActorType::RulerAnn}, const char *ANONYMIZE_URL = ":/InfiniteViewer/Icon/anno.png";
{ ":/InfiniteViewer/Icon/angle.png", AnnotationActorType::AngleAnn}, const char *ANONYMIZE_D_URL = ":/InfiniteViewer/Icon/annod.png";
{ ":/InfiniteViewer/Icon/polygon.png", AnnotationActorType::ClosedPolygonAnn}, const char *SLICE_URL = ":/InfiniteViewer/Icon/slice.png";
{ ":/InfiniteViewer/Icon/polyline.png", AnnotationActorType::OpenPolygonAnn}, const char *SLICE_D_URL = ":/InfiniteViewer/Icon/sliced.png";
{ ":/InfiniteViewer/Icon/arrow.png", AnnotationActorType::ArrowAnn}, const char *WINDOW_URL = ":/InfiniteViewer/Icon/windowlevel.png";
{ ":/InfiniteViewer/Icon/ellipse.png", AnnotationActorType::EllipseAnn}, const char *WINDOW_D_URL = ":/InfiniteViewer/Icon/windowleveld.png";
{ ":/InfiniteViewer/Icon/diameter.png", AnnotationActorType::DiameterAnn}, const char *PAN_URL = ":/InfiniteViewer/Icon/pan.png";
{ ":/InfiniteViewer/Icon/text.png", AnnotationActorType::TextAnn}, const char *PAN_D_URL = ":/InfiniteViewer/Icon/pand.png";
{ ":/InfiniteViewer/Icon/crosshair.png", AnnotationActorType::SyncPoint} const char *ZOOM_URL = ":/InfiniteViewer/Icon/zoom.png";
const char *ZOOM_D_URL = ":/InfiniteViewer/Icon/zoomd.png";
const char *FLIP_URL = ":/InfiniteViewer/Icon/flip.png";
const char *FLIP_D_URL = ":/InfiniteViewer/Icon/flipd.png";
const char *MPR_URL = ":/InfiniteViewer/Icon/MPR.png";
const char *MPR_D_URL = ":/InfiniteViewer/Icon/unMPR.png";
const char *LOC_POINT_URL = ":/InfiniteViewer/Icon/crosshair.png";
const char *LOC_POINT_D_URL = ":/InfiniteViewer/Icon/crosshaird.png";
const char *GRID_URL = ":/InfiniteViewer/Icon/grid.png";
const char *GRID_D_URL = ":/InfiniteViewer/Icon/gridd.png";
const int ACTION_COUNT = 8;
const ActionProperty MEASURE_ACTIIONS[ACTION_COUNT] = {
{ ":/InfiniteViewer/Icon/distance.png", ":/InfiniteViewer/Icon/distanced.png", AnnotationActorType::RulerAnn},
{ ":/InfiniteViewer/Icon/angle.png", ":/InfiniteViewer/Icon/angled.png", AnnotationActorType::AngleAnn},
{ ":/InfiniteViewer/Icon/polygon.png", ":/InfiniteViewer/Icon/polygond.png", AnnotationActorType::ClosedPolygonAnn},
{ ":/InfiniteViewer/Icon/polyline.png", ":/InfiniteViewer/Icon/polylined.png", AnnotationActorType::OpenPolygonAnn},
{ ":/InfiniteViewer/Icon/arrow.png", ":/InfiniteViewer/Icon/arrowd.png", AnnotationActorType::ArrowAnn},
{ ":/InfiniteViewer/Icon/ellipse.png", ":/InfiniteViewer/Icon/ellipsed.png", AnnotationActorType::EllipseAnn},
{ ":/InfiniteViewer/Icon/diameter.png", ":/InfiniteViewer/Icon/diameterd.png", AnnotationActorType::DiameterAnn},
{ ":/InfiniteViewer/Icon/text.png", ":/InfiniteViewer/Icon/textd.png", AnnotationActorType::TextAnn}
}; };
} }
@@ -71,7 +93,11 @@ DefaultToolBar::DefaultToolBar(QWidget *parent) : QToolBar(parent)
//init icons //init icons
mManualIcon.addFile(SYNC_MANUAL_URL); mManualIcon.addFile(SYNC_MANUAL_URL);
mAutoIcon.addFile(SYNC_AUTO_URL); mAutoIcon.addFile(SYNC_AUTO_URL);
mAutoIcon.addFile(SYNC_AUTO_D_URL, QSize(), QIcon::Disabled);
mDisIcon.addFile(SYNC_DIS_URL); mDisIcon.addFile(SYNC_DIS_URL);
mDisIcon.addFile(SYNC_DIS_D_URL, QSize(), QIcon::Disabled);
initToolBarButtons(); initToolBarButtons();
} }
@@ -97,11 +123,28 @@ void DefaultToolBar::resetToolbarMode(bool aHasSeries)
if (aHasSeries){ if (aHasSeries){
mActionVolumeDetail->setVisible(false); mActionVolumeDetail->setVisible(false);
QPixmap map(std::get<0>(MEASURE_ACTIIONS[0]));
mBtnMeasure->setIcon(QIcon(map)); QIcon icon;
MeasureHelper::setMeasureType(std::get<1>(MEASURE_ACTIIONS[0])); icon.addFile(std::get<0>(MEASURE_ACTIIONS[0]));
mBtnSlice->click(); icon.addFile(std::get<1>(MEASURE_ACTIIONS[0]), QSize(), QIcon::Disabled);
mBtnSlice->setChecked(true); mBtnMeasure->setIcon(icon);
MeasureHelper::setMeasureType(std::get<2>(MEASURE_ACTIIONS[0]));
setMode(VTKIS_IMAGE_SLICE);
}
}
int DefaultToolBar::mode() const
{
return mValue;
}
void DefaultToolBar::setMode(int aValue)
{
if (aValue != mValue){
int temp = mValue;
mValue = aValue;
emit modeChanged(temp, mValue);
} }
} }
@@ -135,27 +178,23 @@ void DefaultToolBar::initToolBarButtons() {
mBtnGrid->setEnabled(false); mBtnGrid->setEnabled(false);
{ {
QIcon icon; QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/grid.png"); icon.addFile(GRID_URL);
icon.addFile(":/InfiniteViewer/Icon/gridd.png", QSize(), QIcon::Disabled); icon.addFile(GRID_D_URL, QSize(), QIcon::Disabled);
mBtnGrid->setIcon(icon); mBtnGrid->setIcon(icon);
} }
addButton(mBtnSync, "sync"); addButton(mBtnSync, "sync");
mBtnSync->setEnabled(false); mBtnSync->setEnabled(false);
{ mBtnSync->setIcon(mDisIcon);
QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/sync/sync_dis.png");
icon.addFile(":/InfiniteViewer/Icon/sync/sync_disd.png", QSize(), QIcon::Disabled);
mBtnSync->setIcon(icon);
}
addButton(mBtnAnonymize, "anonymize"); addButton(mBtnAnonymize, "anonymize");
mBtnAnonymize->setEnabled(false); mBtnAnonymize->setEnabled(false);
{ {
QIcon icon; QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/anno.png"); icon.addFile(ANONYMIZE_URL);
icon.addFile(":/InfiniteViewer/Icon/annod.png", QSize(), QIcon::Disabled); icon.addFile(ANONYMIZE_D_URL, QSize(), QIcon::Disabled);
mBtnAnonymize->setIcon(icon); mBtnAnonymize->setIcon(icon);
} }
@@ -166,8 +205,8 @@ void DefaultToolBar::initToolBarButtons() {
mBtnSlice->setEnabled(false); mBtnSlice->setEnabled(false);
{ {
QIcon icon; QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/slice.png"); icon.addFile(SLICE_URL);
icon.addFile(":/InfiniteViewer/Icon/sliced.png", QSize(), QIcon::Disabled); icon.addFile(SLICE_D_URL, QSize(), QIcon::Disabled);
mBtnSlice->setIcon(icon); mBtnSlice->setIcon(icon);
} }
@@ -175,8 +214,8 @@ void DefaultToolBar::initToolBarButtons() {
mBtnWindow->setEnabled(false); mBtnWindow->setEnabled(false);
{ {
QIcon icon; QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/windowlevel.png"); icon.addFile(WINDOW_URL);
icon.addFile(":/InfiniteViewer/Icon/windowleveld.png", QSize(), QIcon::Disabled); icon.addFile(WINDOW_D_URL, QSize(), QIcon::Disabled);
mBtnWindow->setIcon(icon); mBtnWindow->setIcon(icon);
} }
@@ -184,8 +223,8 @@ void DefaultToolBar::initToolBarButtons() {
mBtnPan->setEnabled(false); mBtnPan->setEnabled(false);
{ {
QIcon icon; QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/pan.png"); icon.addFile(PAN_URL);
icon.addFile(":/InfiniteViewer/Icon/pand.png", QSize(), QIcon::Disabled); icon.addFile(PAN_D_URL, QSize(), QIcon::Disabled);
mBtnPan->setIcon(icon); mBtnPan->setIcon(icon);
} }
@@ -193,8 +232,8 @@ void DefaultToolBar::initToolBarButtons() {
mBtnZoom->setEnabled(false); mBtnZoom->setEnabled(false);
{ {
QIcon icon; QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/zoom.png"); icon.addFile(ZOOM_URL);
icon.addFile(":/InfiniteViewer/Icon/zoomd.png", QSize(), QIcon::Disabled); icon.addFile(ZOOM_D_URL, QSize(), QIcon::Disabled);
mBtnZoom->setIcon(icon); mBtnZoom->setIcon(icon);
} }
@@ -202,8 +241,8 @@ void DefaultToolBar::initToolBarButtons() {
mBtnMeasure->setEnabled(false); mBtnMeasure->setEnabled(false);
{ {
QIcon icon; QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/distance.png"); icon.addFile(std::get<0>(MEASURE_ACTIIONS[0]));
icon.addFile(":/InfiniteViewer/Icon/distanced.png", QSize(), QIcon::Disabled); icon.addFile(std::get<1>(MEASURE_ACTIIONS[0]), QSize(), QIcon::Disabled);
mBtnMeasure->setIcon(icon); mBtnMeasure->setIcon(icon);
} }
mActionVolumeDetail = addWidget(mLblMeasure); mActionVolumeDetail = addWidget(mLblMeasure);
@@ -221,8 +260,8 @@ void DefaultToolBar::initToolBarButtons() {
mBtnFlip->setEnabled(false); mBtnFlip->setEnabled(false);
{ {
QIcon icon; QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/flip.png"); icon.addFile(FLIP_URL);
icon.addFile(":/InfiniteViewer/Icon/flipd.png", QSize(), QIcon::Disabled); icon.addFile(FLIP_D_URL, QSize(), QIcon::Disabled);
mBtnFlip->setIcon(icon); mBtnFlip->setIcon(icon);
} }
@@ -239,8 +278,8 @@ void DefaultToolBar::initToolBarButtons() {
mBtnMPR->setEnabled(false); mBtnMPR->setEnabled(false);
{ {
QIcon icon; QIcon icon;
icon.addFile(":/InfiniteViewer/Icon/MPR.png"); icon.addFile(MPR_URL);
icon.addFile(":/InfiniteViewer/Icon/unMPR.png", QSize(), QIcon::Disabled); icon.addFile(MPR_D_URL, QSize(), QIcon::Disabled);
mBtnMPR->setIcon(icon); mBtnMPR->setIcon(icon);
} }
@@ -370,7 +409,7 @@ void DefaultToolBar::initModeButtons() {
mBtnWindow->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); mBtnWindow->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
mBtnWindow->setToolTip(tr("Adjust window level")); mBtnWindow->setToolTip(tr("Adjust window level"));
connect(mBtnWindow, &QToolButton::clicked, this, [=]() { connect(mBtnWindow, &QToolButton::clicked, this, [=]() {
emit modeChanged(7); setMode(VTKIS_IMAGE_WINDOWLEVEL);
}); });
// Menu // Menu
@@ -404,17 +443,17 @@ void DefaultToolBar::initModeButtons() {
mBtnPan->setToolTip(tr("Pan image")); mBtnPan->setToolTip(tr("Pan image"));
connect(mBtnPan, &QToolButton::clicked, this, [=]() { connect(mBtnPan, &QToolButton::clicked, this, [=]() {
emit modeChanged(5); setMode(VTKIS_IMAGE_PAN);
}); });
mBtnZoom->setToolTip(tr("Zoom image")); mBtnZoom->setToolTip(tr("Zoom image"));
connect(mBtnZoom, &QToolButton::clicked, this, [=]() { connect(mBtnZoom, &QToolButton::clicked, this, [=]() {
emit modeChanged(6); setMode(VTKIS_IMAGE_ZOOM);
}); });
mBtnSlice->setToolTip(tr("Browse series")); mBtnSlice->setToolTip(tr("Browse series"));
connect(mBtnSlice, &QToolButton::clicked, this, [=]() { connect(mBtnSlice, &QToolButton::clicked, this, [=]() {
emit modeChanged(4); setMode(VTKIS_IMAGE_SLICE);
}); });
initMeasureButton(); initMeasureButton();
@@ -489,16 +528,16 @@ void DefaultToolBar::initMeasureButton() {
mBtnMeasure->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); mBtnMeasure->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
mBtnMeasure->setToolTip(tr("Measuring tool")); mBtnMeasure->setToolTip(tr("Measuring tool"));
mBtnMeasure->setProperty("mode",36); mBtnMeasure->setProperty("mode",VTKIS_MEASURE);
connect(mBtnMeasure, &QToolButton::clicked, [=](){ connect(mBtnMeasure, &QToolButton::clicked, [=](){
int mode = mBtnMeasure->property("mode").toInt(); int mode = mBtnMeasure->property("mode").toInt();
if (mode != 36) if (mode != VTKIS_MEASURE)
{ {
emit modeChanged(mode); setMode(mode);
} }
else{ else{
emit modeChanged(36); setMode(VTKIS_MEASURE);
MeasureHelper::setMeasureType(MeasureHelper::getMeasureType()); MeasureHelper::setMeasureType(MeasureHelper::getMeasureType());
} }
}); });
@@ -506,31 +545,37 @@ void DefaultToolBar::initMeasureButton() {
QMenu *m; QMenu *m;
m = new QMenu(this); m = new QMenu(this);
for (int j = 0; j < ACTION_COUNT-1; ++j) { for (int j = 0; j < ACTION_COUNT; ++j) {
m->addAction(measures[j], this, [=] { m->addAction(measures[j], this, [=] {
mBtnMeasure->setChecked(true); mBtnMeasure->setChecked(true);
QPixmap map(std::get<0>(MEASURE_ACTIIONS[j])); QIcon icon;
mBtnMeasure->setIcon(QIcon(map)); icon.addFile(std::get<0>(MEASURE_ACTIIONS[j]));
emit modeChanged(36); icon.addFile(std::get<1>(MEASURE_ACTIIONS[j]), QSize(), QIcon::Disabled);
MeasureHelper::setMeasureType(std::get<1>(MEASURE_ACTIIONS[j])); mBtnMeasure->setIcon(icon);
mBtnMeasure->setProperty("mode",36); setMode(VTKIS_MEASURE);
MeasureHelper::setMeasureType(std::get<2>(MEASURE_ACTIIONS[j]));
mBtnMeasure->setProperty("mode",VTKIS_MEASURE);
mActionVolumeDetail->setVisible(false); mActionVolumeDetail->setVisible(false);
}); });
} }
m->addAction(tr("Location Point"), this,[=](){ m->addAction(tr("Location Point"), this,[=](){
mBtnMeasure->setChecked(true); mBtnMeasure->setChecked(true);
QPixmap map(":/InfiniteViewer/Icon/crosshair.png"); QIcon icon;
mBtnMeasure->setIcon(QIcon(map)); icon.addFile(LOC_POINT_URL);
mBtnMeasure->setProperty("mode",38); icon.addFile(LOC_POINT_D_URL, QSize(), QIcon::Disabled);
emit modeChanged(38); mBtnMeasure->setIcon(icon);
mBtnMeasure->setProperty("mode",VTKIS_SYNCPOINT);
setMode(VTKIS_SYNCPOINT);
}); });
m->addAction(tr("Volume Measure"), this,[=](){ m->addAction(tr("Volume Measure"), this,[=](){
mBtnMeasure->setChecked(true); mBtnMeasure->setChecked(true);
QPixmap map(":/InfiniteViewer/Icon/volmeasure.png"); QIcon icon;
mBtnMeasure->setIcon(QIcon(map)); icon.addFile(":/InfiniteViewer/Icon/volmeasure.png");
mBtnMeasure->setProperty("mode",39); icon.addFile(":/InfiniteViewer/Icon/volmeasured.png", QSize(), QIcon::Disabled);
emit modeChanged(39); mBtnMeasure->setIcon(icon);
mBtnMeasure->setProperty("mode",VTKIS_VOLUMEMEASURE);
setMode(VTKIS_VOLUMEMEASURE);
}); });
m->addSeparator(); m->addSeparator();
ADD_DEL_ACTION(tr("Delete selected"), AnnotationDeleteType::DeleteSelectedAnn); ADD_DEL_ACTION(tr("Delete selected"), AnnotationDeleteType::DeleteSelectedAnn);
@@ -677,7 +722,7 @@ void DefaultToolBar::initMPRButton(){
}); });
} }
void DefaultToolBar::resetNeedCheckFunctionButtons(){ void DefaultToolBar::resetModeButtons(){
mBtnMPR->setEnabled(false); mBtnMPR->setEnabled(false);
mBtnFusion->setEnabled(false); mBtnFusion->setEnabled(false);
for(auto var : mPseudocolorGroup->actions()) for(auto var : mPseudocolorGroup->actions())
@@ -690,10 +735,18 @@ void DefaultToolBar::resetNeedCheckFunctionButtons(){
} }
} }
void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state) void DefaultToolBar::updateModeButtonsState(ViewFunctionState state)
{ {
if (state.none) if (state.none)
{ {
mBtnAnonymize->setCheckable(false);
mBtnSlice->setCheckable(false);
mBtnWindow->setCheckable(false);
mBtnPan->setCheckable(false);
mBtnZoom->setCheckable(false);
mBtnMeasure->setCheckable(false);
mBtnSave->setEnabled(false); mBtnSave->setEnabled(false);
mBtnGrid->setEnabled(false); mBtnGrid->setEnabled(false);
mBtnSync->setEnabled(false); mBtnSync->setEnabled(false);
@@ -711,6 +764,13 @@ void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
mBtnVR->setEnabled(false); mBtnVR->setEnabled(false);
} }
else{ else{
mBtnAnonymize->setCheckable(true);
mBtnSlice->setCheckable(true);
mBtnWindow->setCheckable(true);
mBtnPan->setCheckable(true);
mBtnZoom->setCheckable(true);
mBtnMeasure->setCheckable(true);
mBtnSave->setEnabled(true); mBtnSave->setEnabled(true);
mBtnGrid->setEnabled(true); mBtnGrid->setEnabled(true);
mBtnSync->setEnabled(true); mBtnSync->setEnabled(true);
@@ -737,6 +797,38 @@ void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
mMPRActions[state.canMPR]->setChecked(true); mMPRActions[state.canMPR]->setChecked(true);
} }
mBtnFusion->setEnabled(state.canFusion); mBtnFusion->setEnabled(state.canFusion);
switch (mode())
{
case VTKIS_IMAGE_PAN:
{
mBtnPan->setChecked(true);
break;
}
case VTKIS_IMAGE_ZOOM:
{
mBtnZoom->setChecked(true);
break;
}
case VTKIS_IMAGE_SLICE:
{
mBtnSlice->setChecked(true);
break;
}
case VTKIS_IMAGE_WINDOWLEVEL:
{
mBtnWindow->setChecked(true);
break;
}
case VTKIS_MEASURE:
case VTKIS_SYNCPOINT:
case VTKIS_VOLUMEMEASURE:
{
mBtnMeasure->setChecked(true);
break;
}
default:
break;
}
} }
} }

View File

@@ -15,21 +15,23 @@ class DefaultToolBar : public QToolBar {
Q_OBJECT Q_OBJECT
public: public:
explicit DefaultToolBar(QWidget *parent = nullptr); explicit DefaultToolBar(QWidget *parent = nullptr);
~DefaultToolBar();
~DefaultToolBar(); Q_PROPERTY(int mode READ mode WRITE setMode NOTIFY modeChanged)
void resetModeButtons();
void resetNeedCheckFunctionButtons(); void updateModeButtonsState(ViewFunctionState state);
void updateNeedCheckFunctionButtons(ViewFunctionState state);
void setViewManager(ImageViewManager* aManager); void setViewManager(ImageViewManager* aManager);
void changePseudoColor(bool on = false); void changePseudoColor(bool on = false);
void resetToolbarMode(bool aHasSeries = true); void resetToolbarMode(bool aHasSeries = true);
int mode() const;
void setMode(int aValue);
signals: signals:
void openFile(); void openFile();
void openFolder(); void openFolder();
void import(); void import();
void save(); void save();
void showGrid(QToolButton* btn); void showGrid(QToolButton* btn);
void modeChanged(int mode); void modeChanged(int aLastMode,int mCurrentMode);
void customWindow(); void customWindow();
void fusion(bool on = false); void fusion(bool on = false);
void cine(bool on = false); void cine(bool on = false);
@@ -109,6 +111,7 @@ private:
QAction* mMPRActions[3]={nullptr,nullptr,nullptr}; QAction* mMPRActions[3]={nullptr,nullptr,nullptr};
QActionGroup *mPseudocolorGroup; QActionGroup *mPseudocolorGroup;
ImageViewManager* mImageViewManager; ImageViewManager* mImageViewManager;
int mValue;
}; };

View File

@@ -83,14 +83,14 @@ void QDicomViewer::SetupConnections() {
initScreenControl(); initScreenControl();
connect(ui->viewContainer->getViewManager(), &ImageViewManager::currentViewChanged, connect(ui->viewContainer->getViewManager(), &ImageViewManager::currentViewChanged,
ui->toolBar, &DefaultToolBar::resetNeedCheckFunctionButtons); ui->toolBar, &DefaultToolBar::resetModeButtons);
worker.setManager(ui->viewContainer->getViewManager()); worker.setManager(ui->viewContainer->getViewManager());
connect(ui->viewContainer->getViewManager(), connect(ui->viewContainer->getViewManager(),
&ImageViewManager::currentViewChanged, &ImageViewManager::currentViewChanged,
&worker,&ImageViewStateCheckWorker::checkImageViewState, Qt::QueuedConnection); &worker,&ImageViewStateCheckWorker::checkImageViewState, Qt::QueuedConnection);
connect(&worker,&ImageViewStateCheckWorker::imageViewStateChanged, connect(&worker,&ImageViewStateCheckWorker::imageViewStateChanged,
ui->toolBar,&DefaultToolBar::updateNeedCheckFunctionButtons, Qt::QueuedConnection); ui->toolBar,&DefaultToolBar::updateModeButtonsState, Qt::QueuedConnection);
workerManager.registerWorker(&worker); workerManager.registerWorker(&worker);
//通知左侧的缩略图bar 当前选中series的变换 //通知左侧的缩略图bar 当前选中series的变换
@@ -138,7 +138,7 @@ void QDicomViewer::initViewOperation() {
// operation reference line hide and show // operation reference line hide and show
connect(ui->toolBar, &DefaultToolBar::referenceLineStateChange, connect(ui->toolBar, &DefaultToolBar::referenceLineStateChange,
ui->viewContainer->getViewManager(), &ImageViewManager::switchReferenceLineVisibility); // operation mode change ui->viewContainer->getViewManager(), &ImageViewManager::switchReferenceLineVisibility); // operation mode change
connect(ui->toolBar, &DefaultToolBar::modeChanged, [=](int mode) { connect(ui->toolBar, &DefaultToolBar::modeChanged, [=](int lastMode,int mode) {
ui->viewContainer->getViewManager()->setInteractionMode(mode); ui->viewContainer->getViewManager()->setInteractionMode(mode);
}); });
// custom window level // custom window level
@@ -339,7 +339,7 @@ void QDicomViewer::Slot_ToolbarVisibilityChanged(bool visible) {
void QDicomViewer::openDICOMFromPACS(int err, std::string dirName) { void QDicomViewer::openDICOMFromPACS(int err, std::string dirName) {
if (err == NOERROR) { if (err == NOERROR) {
openDICOMWithLayout(dirName, LEFT_SIDE); openDICOMWithLayout(dirName, UNKNOWN_SIDE);
} else { } else {
//pop out msg box //pop out msg box
QMessageBox::warning(this, tr("Warning"), tr("open DICOM Images From PACS Fail")); QMessageBox::warning(this, tr("Warning"), tr("open DICOM Images From PACS Fail"));