浏览代码

Set model selection when double-clicking on thumbnail

nherlambang 14 年之前
父节点
当前提交
16843d96f9

+ 11 - 0
Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp

@@ -118,6 +118,7 @@ ctkDICOMAppWidget::ctkDICOMAppWidget(QWidget* _parent):Superclass(_parent),
   connect(d->treeView, SIGNAL(clicked(const QModelIndex&)), this, SLOT(onModelSelected(const QModelIndex &)));
 
   connect(d->thumbnailsWidget, SIGNAL(selected(const ctkDICOMThumbnailWidget&)), this, SLOT(onThumbnailSelected(const ctkDICOMThumbnailWidget&)));
+  connect(d->thumbnailsWidget, SIGNAL(doubleClicked(const ctkDICOMThumbnailWidget&)), this, SLOT(onThumbnailDoubleClicked(const ctkDICOMThumbnailWidget&)));
   connect(d->ImportDialog, SIGNAL(fileSelected(QString)),this,SLOT(onImportDirectory(QString)));
 
   connect(d->DICOMDatabase.data(), SIGNAL( databaseChanged() ), &(d->DICOMModel), SLOT( reset() ) );
@@ -223,6 +224,16 @@ void ctkDICOMAppWidget::onThumbnailSelected(const ctkDICOMThumbnailWidget& widge
 }
 
 //----------------------------------------------------------------------------
+void ctkDICOMAppWidget::onThumbnailDoubleClicked(const ctkDICOMThumbnailWidget& widget)
+{
+    Q_D(ctkDICOMAppWidget);
+
+    d->treeView->setCurrentIndex(widget.sourceIndex());
+    d->thumbnailsWidget->onModelSelected(widget.sourceIndex());
+    d->imagePreview->onModelSelected(widget.sourceIndex());
+}
+
+//----------------------------------------------------------------------------
 void ctkDICOMAppWidget::onImportDirectory(QString directory)
 {
   Q_D(ctkDICOMAppWidget);

+ 1 - 0
Libs/DICOM/Widgets/ctkDICOMAppWidget.h

@@ -47,6 +47,7 @@ public slots:
   void onAddToDatabase();
 
   void onThumbnailSelected(const ctkDICOMThumbnailWidget& widget);
+  void onThumbnailDoubleClicked(const ctkDICOMThumbnailWidget& widget);
 
   void openImportDialog();
   void openExportDialog();

+ 4 - 0
Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp

@@ -82,6 +82,7 @@ void ctkDICOMThumbnailListWidgetPrivate::onPatientModelSelected(const QModelInde
                 this->scrollAreaContentWidget->layout()->addWidget(widget);
                 q->connect(widget, SIGNAL(selected(ctkDICOMThumbnailWidget)), q, SLOT(onThumbnailSelected(ctkDICOMThumbnailWidget)));
                 q->connect(widget, SIGNAL(selected(ctkDICOMThumbnailWidget)), q, SIGNAL(selected(ctkDICOMThumbnailWidget)));
+                q->connect(widget, SIGNAL(doubleClicked(ctkDICOMThumbnailWidget)), q, SIGNAL(doubleClicked(ctkDICOMThumbnailWidget)));
             }else{
                 logger.error("No thumbnail file " + thumbnail);
             }
@@ -119,6 +120,7 @@ void ctkDICOMThumbnailListWidgetPrivate::onStudyModelSelected(const QModelIndex
                 this->scrollAreaContentWidget->layout()->addWidget(widget);
                 q->connect(widget, SIGNAL(selected(ctkDICOMThumbnailWidget)), q, SLOT(onThumbnailSelected(ctkDICOMThumbnailWidget)));
                 q->connect(widget, SIGNAL(selected(ctkDICOMThumbnailWidget)), q, SIGNAL(selected(ctkDICOMThumbnailWidget)));
+                q->connect(widget, SIGNAL(doubleClicked(ctkDICOMThumbnailWidget)), q, SIGNAL(doubleClicked(ctkDICOMThumbnailWidget)));
             }else{
                 logger.error("No thumbnail file " + thumbnail);
             }
@@ -159,6 +161,7 @@ void ctkDICOMThumbnailListWidgetPrivate::onSeriesModelSelected(const QModelIndex
                 this->scrollAreaContentWidget->layout()->addWidget(widget);
                 q->connect(widget, SIGNAL(selected(ctkDICOMThumbnailWidget)), q, SLOT(onThumbnailSelected(ctkDICOMThumbnailWidget)));
                 q->connect(widget, SIGNAL(selected(ctkDICOMThumbnailWidget)), q, SIGNAL(selected(ctkDICOMThumbnailWidget)));
+                q->connect(widget, SIGNAL(doubleClicked(ctkDICOMThumbnailWidget)), q, SIGNAL(doubleClicked(ctkDICOMThumbnailWidget)));
             }
             else
             {
@@ -178,6 +181,7 @@ void ctkDICOMThumbnailListWidgetPrivate::clearAllThumbnails(){
         if(thumbnailWidget){
             q->disconnect(thumbnailWidget, SIGNAL(selected(ctkDICOMThumbnailWidget)), q, SLOT(onThumbnailSelected(ctkDICOMThumbnailWidget)));
             q->disconnect(thumbnailWidget, SIGNAL(selected(ctkDICOMThumbnailWidget)), q, SIGNAL(selected(ctkDICOMThumbnailWidget)));
+            q->disconnect(thumbnailWidget, SIGNAL(doubleClicked(ctkDICOMThumbnailWidget)), q, SIGNAL(doubleClicked(ctkDICOMThumbnailWidget)));
         }
         item->widget()->deleteLater();
     }

+ 1 - 0
Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.h

@@ -52,6 +52,7 @@ private:
 
 signals:
   void selected(const ctkDICOMThumbnailWidget& widget);
+  void doubleClicked(const ctkDICOMThumbnailWidget& widget);
 
 public slots:
   void onModelSelected(const QModelIndex& index);

+ 6 - 0
Libs/DICOM/Widgets/ctkDICOMThumbnailWidget.cpp

@@ -151,3 +151,9 @@ void ctkDICOMThumbnailWidget::mousePressEvent(QMouseEvent* event)
     this->setSelected(true);
     emit selected(*this);
 }
+
+//----------------------------------------------------------------------------
+void ctkDICOMThumbnailWidget::mouseDoubleClickEvent(QMouseEvent *event){
+    Q_UNUSED(event);
+    emit doubleClicked(*this);
+}

+ 2 - 0
Libs/DICOM/Widgets/ctkDICOMThumbnailWidget.h

@@ -55,6 +55,7 @@ protected:
   QScopedPointer<ctkDICOMThumbnailWidgetPrivate> d_ptr;
 
   virtual void mousePressEvent(QMouseEvent* event);
+  virtual void mouseDoubleClickEvent(QMouseEvent* event);
 
 private:
   Q_DECLARE_PRIVATE(ctkDICOMThumbnailWidget);
@@ -62,6 +63,7 @@ private:
 
 signals:
   void selected(const ctkDICOMThumbnailWidget& widget);
+  void doubleClicked(const ctkDICOMThumbnailWidget& widget);
 };
 
 #endif