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,
|
||||
this, &ImageViewManager::viewDoubleClicked);
|
||||
|
||||
connect(view, &DicomImageView::afterViewCleared,this, &ImageViewManager::viewCleared);
|
||||
|
||||
connect(view, &DicomImageView::onDragDrop, [=](DicomImageView *view, const std::string &id) {
|
||||
setCurrentView(view);
|
||||
viewReload(id);
|
||||
@@ -68,6 +70,7 @@ void ImageViewManager::setCurrentView(DicomImageView *view) {
|
||||
currentView = view;
|
||||
currentView->setHighlight(true);
|
||||
emit currentViewChanged(currentView->getSeriesInstance()->getUniqueID());
|
||||
checkCurrentViewFusion();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,6 +221,11 @@ void ImageViewManager::viewReload(const std::string &unique_info) {
|
||||
DicomLoader *helper = DicomLoader::GetInstance();
|
||||
currentView->loadSeries(helper->getSeriesImageSet(unique_info));
|
||||
currentView->render();
|
||||
checkCurrentViewFusion();
|
||||
}
|
||||
|
||||
void ImageViewManager::viewCleared() {
|
||||
emit fusionCheckStateChanged(false);
|
||||
}
|
||||
|
||||
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) {
|
||||
if (getView(i) == getCurrentView()) continue;
|
||||
DicomImageView *overlap_view = getView(i);
|
||||
if (currentView->checkFusion(overlap_view)) {
|
||||
currentFusionView = overlap_view;
|
||||
return true;
|
||||
emit fusionCheckStateChanged(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
currentFusionView = nullptr;
|
||||
return false;
|
||||
emit fusionCheckStateChanged(false);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
return currentView;
|
||||
}
|
||||
|
||||
bool checkCurrentViewFusion();
|
||||
void checkCurrentViewFusion();
|
||||
|
||||
int getViewCount() {
|
||||
return vList.size();
|
||||
@@ -68,6 +68,8 @@ public:
|
||||
|
||||
void viewReload(const std::string &unique_info);
|
||||
|
||||
void viewCleared();
|
||||
|
||||
void setInteractionMode(int InteractionMode);
|
||||
|
||||
void renderAll();
|
||||
@@ -103,6 +105,7 @@ public:
|
||||
|
||||
signals:
|
||||
void currentViewChanged(const std::string& seriesID);
|
||||
void fusionCheckStateChanged(bool able);
|
||||
|
||||
private:
|
||||
QList<DicomImageView *> vList;
|
||||
|
||||
@@ -194,7 +194,7 @@ void DicomImageView::scrollBarValueChanged(int slice) {
|
||||
|
||||
void DicomImageView::viewCleared() {
|
||||
resetView();
|
||||
emit afterViewClear(this);
|
||||
emit afterViewCleared(this);
|
||||
}
|
||||
|
||||
void DicomImageView::doubleClicked() {
|
||||
|
||||
@@ -167,7 +167,7 @@ public:
|
||||
|
||||
signals:
|
||||
|
||||
void afterViewClear(DicomImageView *view);
|
||||
void afterViewCleared(DicomImageView *view);
|
||||
|
||||
void onViewClick(DicomImageView *view);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,6 +7,8 @@
|
||||
#include "customwindow.h"
|
||||
#include "UI/Widget/Measure/pqFontPropertyWidget.h"
|
||||
|
||||
typedef tuple<const char *, const char *, int> ActionProperty;
|
||||
|
||||
/**
|
||||
* @brief 主窗口Class
|
||||
* 继承自QMainWindow,主要用于显示整个界面
|
||||
@@ -82,7 +84,7 @@ private:
|
||||
* @param dicomName DICOM文件路径
|
||||
* @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();
|
||||
|
||||
/**
|
||||
/**
|
||||
* 为对应的DicomImageView构建对应的播放控件
|
||||
* @param v
|
||||
*/
|
||||
@@ -121,4 +123,5 @@ private:
|
||||
|
||||
AnnotationActorType m_cur_measure = AnnotationActorType::RulerAnn;
|
||||
|
||||
void syncStateChanged() const;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user