From 59de3a2412db58ee95f97ea80ca69e5ba9114bbe Mon Sep 17 00:00:00 2001 From: kradchen Date: Fri, 1 Aug 2025 15:40:20 +0800 Subject: [PATCH] fix: fix layout change bug after double click caused max screen --- CMakeLists.txt | 2 +- src/src/UI/Manager/ImageViewManager.cpp | 5 +++++ src/src/UI/Manager/ImageViewManager.h | 2 ++ src/src/UI/Widget/ImageView/ViewContainerWidget.cpp | 8 ++++---- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4401945..0ea4ed3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ file(GLOB_RECURSE project_cxx src/*.cxx) file(GLOB_RECURSE project_cc src/*.cc) #set(VTK_DIR "D:/Libs/binary/VTK8.1.2/lib/cmake/vtk-8.2") -set(VTK_DIR "D:/Libs/Static/VTK9.2.2win11/lib/cmake/vtk-9.2") +set(VTK_DIR "D:/Libs/binary/VTK9.2.2win11/lib/cmake/vtk-9.2") set(Qt5_DIR "D:/Qt/Qt5.12.0/5.12.0/msvc2017_64/lib/cmake/Qt5") set(DCMTK_DIR "D:/Libs/binary/DCMTK/cmake") diff --git a/src/src/UI/Manager/ImageViewManager.cpp b/src/src/UI/Manager/ImageViewManager.cpp index c8747aa..8a6c535 100644 --- a/src/src/UI/Manager/ImageViewManager.cpp +++ b/src/src/UI/Manager/ImageViewManager.cpp @@ -539,6 +539,11 @@ bool ImageViewManager::checkViewFusion(DicomImageView *view) { return false; } +void ImageViewManager::setMax(bool aMaxed) +{ + mMaxed = aMaxed; +} + bool ImageViewManager::checkSyncAbility(DicomImageView* view) { bool flag = false; this->smartDo([](auto v, auto callData) { diff --git a/src/src/UI/Manager/ImageViewManager.h b/src/src/UI/Manager/ImageViewManager.h index 2a04adc..18ca5b9 100644 --- a/src/src/UI/Manager/ImageViewManager.h +++ b/src/src/UI/Manager/ImageViewManager.h @@ -39,6 +39,8 @@ public: bool checkViewFusion(DicomImageView *view); + void setMax(bool aMaxed); + int getViewCount() { return vList.size(); } diff --git a/src/src/UI/Widget/ImageView/ViewContainerWidget.cpp b/src/src/UI/Widget/ImageView/ViewContainerWidget.cpp index 7d9c325..2b8cf5d 100644 --- a/src/src/UI/Widget/ImageView/ViewContainerWidget.cpp +++ b/src/src/UI/Widget/ImageView/ViewContainerWidget.cpp @@ -42,19 +42,19 @@ void ViewContainerWidget::viewLayoutChanged(int col, int row) { if (!(col > 0 && row > 0)) { return; } - + int viewCount = col * row; for (int i = 0; i < mViewManager->getViewCount(); i++) { DicomImageView *v = mViewManager->getView(i); - this->layout()->removeWidget(v); + v->setVisible(true); } - int viewCount = col * row; + if (viewCount>1) mViewManager->setMax(false); while (viewCount < mViewManager->getViewCount()) { DicomImageView *v = mViewManager->getView(mViewManager->getViewCount() - 1); //YTC:better compare before delete if (mViewManager->getCurrentView() == v) { mViewManager->setCurrentView(mViewManager->getView(0)); } - + this->layout()->removeWidget(v); mViewManager->remove(v); } //