Refactor QDicomViewer, add fusion button check logic.
This commit is contained in:
@@ -35,6 +35,8 @@ void ImageViewManager::add(DicomImageView *view) {
|
|||||||
connect(view, &DicomImageView::onViewDoubleClick,
|
connect(view, &DicomImageView::onViewDoubleClick,
|
||||||
this, &ImageViewManager::viewDoubleClicked);
|
this, &ImageViewManager::viewDoubleClicked);
|
||||||
|
|
||||||
|
connect(view, &DicomImageView::afterViewCleared,this, &ImageViewManager::viewCleared);
|
||||||
|
|
||||||
connect(view, &DicomImageView::onDragDrop, [=](DicomImageView *view, const std::string &id) {
|
connect(view, &DicomImageView::onDragDrop, [=](DicomImageView *view, const std::string &id) {
|
||||||
setCurrentView(view);
|
setCurrentView(view);
|
||||||
viewReload(id);
|
viewReload(id);
|
||||||
@@ -68,6 +70,7 @@ void ImageViewManager::setCurrentView(DicomImageView *view) {
|
|||||||
currentView = view;
|
currentView = view;
|
||||||
currentView->setHighlight(true);
|
currentView->setHighlight(true);
|
||||||
emit currentViewChanged(currentView->getSeriesInstance()->getUniqueID());
|
emit currentViewChanged(currentView->getSeriesInstance()->getUniqueID());
|
||||||
|
checkCurrentViewFusion();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,6 +221,11 @@ void ImageViewManager::viewReload(const std::string &unique_info) {
|
|||||||
DicomLoader *helper = DicomLoader::GetInstance();
|
DicomLoader *helper = DicomLoader::GetInstance();
|
||||||
currentView->loadSeries(helper->getSeriesImageSet(unique_info));
|
currentView->loadSeries(helper->getSeriesImageSet(unique_info));
|
||||||
currentView->render();
|
currentView->render();
|
||||||
|
checkCurrentViewFusion();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImageViewManager::viewCleared() {
|
||||||
|
emit fusionCheckStateChanged(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageViewManager::setInteractionMode(int InteractionMode) {
|
void ImageViewManager::setInteractionMode(int InteractionMode) {
|
||||||
@@ -292,15 +300,16 @@ void ImageViewManager::switchFusion() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImageViewManager::checkCurrentViewFusion() {
|
void ImageViewManager::checkCurrentViewFusion() {
|
||||||
for (int i = 0; i < getViewCount(); ++i) {
|
for (int i = 0; i < getViewCount(); ++i) {
|
||||||
if (getView(i) == getCurrentView()) continue;
|
if (getView(i) == getCurrentView()) continue;
|
||||||
DicomImageView *overlap_view = getView(i);
|
DicomImageView *overlap_view = getView(i);
|
||||||
if (currentView->checkFusion(overlap_view)) {
|
if (currentView->checkFusion(overlap_view)) {
|
||||||
currentFusionView = overlap_view;
|
currentFusionView = overlap_view;
|
||||||
return true;
|
emit fusionCheckStateChanged(true);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
currentFusionView = nullptr;
|
currentFusionView = nullptr;
|
||||||
return false;
|
emit fusionCheckStateChanged(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public:
|
|||||||
return currentView;
|
return currentView;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool checkCurrentViewFusion();
|
void checkCurrentViewFusion();
|
||||||
|
|
||||||
int getViewCount() {
|
int getViewCount() {
|
||||||
return vList.size();
|
return vList.size();
|
||||||
@@ -68,6 +68,8 @@ public:
|
|||||||
|
|
||||||
void viewReload(const std::string &unique_info);
|
void viewReload(const std::string &unique_info);
|
||||||
|
|
||||||
|
void viewCleared();
|
||||||
|
|
||||||
void setInteractionMode(int InteractionMode);
|
void setInteractionMode(int InteractionMode);
|
||||||
|
|
||||||
void renderAll();
|
void renderAll();
|
||||||
@@ -103,6 +105,7 @@ public:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void currentViewChanged(const std::string& seriesID);
|
void currentViewChanged(const std::string& seriesID);
|
||||||
|
void fusionCheckStateChanged(bool able);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<DicomImageView *> vList;
|
QList<DicomImageView *> vList;
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ void DicomImageView::scrollBarValueChanged(int slice) {
|
|||||||
|
|
||||||
void DicomImageView::viewCleared() {
|
void DicomImageView::viewCleared() {
|
||||||
resetView();
|
resetView();
|
||||||
emit afterViewClear(this);
|
emit afterViewCleared(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DicomImageView::doubleClicked() {
|
void DicomImageView::doubleClicked() {
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ public:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void afterViewClear(DicomImageView *view);
|
void afterViewCleared(DicomImageView *view);
|
||||||
|
|
||||||
void onViewClick(DicomImageView *view);
|
void onViewClick(DicomImageView *view);
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,6 +7,8 @@
|
|||||||
#include "customwindow.h"
|
#include "customwindow.h"
|
||||||
#include "UI/Widget/Measure/pqFontPropertyWidget.h"
|
#include "UI/Widget/Measure/pqFontPropertyWidget.h"
|
||||||
|
|
||||||
|
typedef tuple<const char *, const char *, int> ActionProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 主窗口Class
|
* @brief 主窗口Class
|
||||||
* 继承自QMainWindow,主要用于显示整个界面
|
* 继承自QMainWindow,主要用于显示整个界面
|
||||||
@@ -82,7 +84,7 @@ private:
|
|||||||
* @param dicomName DICOM文件路径
|
* @param dicomName DICOM文件路径
|
||||||
* @param openMode 文件打开方式,文件方式或文件夹方式
|
* @param openMode 文件打开方式,文件方式或文件夹方式
|
||||||
*/
|
*/
|
||||||
void openAndDrawDICOM(const std::string &dicomName, SeriesOpenMode openMode);
|
void openDICOM(const std::string &dicomName, SeriesOpenMode openMode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置部分空间的槽函数连接
|
* 设置部分空间的槽函数连接
|
||||||
@@ -94,7 +96,7 @@ private:
|
|||||||
*/
|
*/
|
||||||
void executeActiveMeasure();
|
void executeActiveMeasure();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 为对应的DicomImageView构建对应的播放控件
|
* 为对应的DicomImageView构建对应的播放控件
|
||||||
* @param v
|
* @param v
|
||||||
*/
|
*/
|
||||||
@@ -121,4 +123,5 @@ private:
|
|||||||
|
|
||||||
AnnotationActorType m_cur_measure = AnnotationActorType::RulerAnn;
|
AnnotationActorType m_cur_measure = AnnotationActorType::RulerAnn;
|
||||||
|
|
||||||
|
void syncStateChanged() const;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user