瀏覽代碼

modify ctkDICOMThumbnailListWidget to use ctkFlowLayout

nherlambang 14 年之前
父節點
當前提交
c484d56db4

+ 0 - 5
Libs/DICOM/Widgets/Resources/UI/ctkDICOMThumbnailListWidget.ui

@@ -28,11 +28,6 @@
         <height>211</height>
        </rect>
       </property>
-      <layout class="QVBoxLayout" name="verticalLayout">
-       <item>
-        <layout class="QGridLayout" name="thumbnailLayout"/>
-       </item>
-      </layout>
      </widget>
     </widget>
    </item>

+ 2 - 2
Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp

@@ -65,9 +65,9 @@ ctkDICOMAppWidget::ctkDICOMAppWidget(QWidget* _parent):Superclass(_parent),
   d->ImportWidget = new ctkDICOMImportWidget();
 
   //Set thumbnails width in thumbnail widget
-  d->thumbnailsWidget->setThumbnailWidth(128);
+  //d->thumbnailsWidget->setThumbnailWidth(128);
   //Test add thumbnails
-  d->thumbnailsWidget->addTestThumbnail();
+  //d->thumbnailsWidget->addTestThumbnail();
 
   //connect signal and slots
   connect(d->treeView, SIGNAL(clicked(const QModelIndex&)), this, SLOT(onDICOMModelSelected(const QModelIndex &)));

+ 19 - 85
Libs/DICOM/Widgets/ctkDICOMThumbnailListWidget.cpp

@@ -2,6 +2,11 @@
 // Qt include
 #include <QGridLayout>
 #include <QResizeEvent>
+#include <QPushButton>
+#include <QPixmap>
+
+// ctkWidgets includes
+#include "ctkFlowLayout.h"
 
 // ctkDICOMWidgets includes
 #include "ctkDICOMThumbnailListWidget.h"
@@ -19,13 +24,7 @@ public:
     
   }
 
-  void clearAllThumbnails();
-  void addThumbnail(ctkDICOMThumbnailWidget* widget);
-  void rearrangeThumbnails();
-
   QList<ctkDICOMThumbnailWidget*> thumbnailList;
-  int maxColumnNum;
-  int thumbnailWidth;
 
   ctkDICOMThumbnailListWidget* const q_ptr;
   Q_DECLARE_PUBLIC(ctkDICOMThumbnailListWidget);
@@ -34,50 +33,6 @@ public:
 //----------------------------------------------------------------------------
 // ctkDICOMThumbnailListWidgetPrivate methods
 
-void ctkDICOMThumbnailListWidgetPrivate::rearrangeThumbnails(){
-  int count = this->thumbnailList.count();
-
-  // clear all thumbnails from layout
-  for(int i = 0; i < count; i++){
-    this->thumbnailLayout->removeWidget(this->thumbnailList.at(i));
-  }
-
-  // add all thumbnails to layout with new arrangement
-  int row = 0;
-  int column = 0;
-  for(int i = 0; i < count; i++){
-    ctkDICOMThumbnailWidget* widget = this->thumbnailList.at(i);
-    this->thumbnailLayout->addWidget(widget, row, column);
-    column++;
-    if(column >= this->maxColumnNum){
-      column = 0;
-      row++;
-    }
-  }
-}
-
-void ctkDICOMThumbnailListWidgetPrivate::addThumbnail(ctkDICOMThumbnailWidget* widget){
-  Q_Q(ctkDICOMThumbnailListWidget);
-
-  if(widget == NULL)return;
-
-  this->thumbnailList.push_back(widget);
-
-  q->connect(widget, SIGNAL(selected(const ctkDICOMThumbnailWidget&)), q,  SIGNAL(selected(const ctkDICOMThumbnailWidget&)));
-}
-
-void ctkDICOMThumbnailListWidgetPrivate::clearAllThumbnails(){
-  int count = this->thumbnailList.count();
-
-  // clear all thumbnails from layout
-  for(int i = 0; i < count; i++){
-    QWidget* widget = this->thumbnailList.at(i);
-    this->thumbnailLayout->removeWidget(widget);
-    widget->deleteLater();
-  }
-
-  this->thumbnailList.clear();
-}
 
 //----------------------------------------------------------------------------
 // ctkDICOMThumbnailListWidget methods
@@ -89,50 +44,29 @@ ctkDICOMThumbnailListWidget::ctkDICOMThumbnailListWidget(QWidget* _parent):Super
   Q_D(ctkDICOMThumbnailListWidget);
   
   d->setupUi(this);
-  d->maxColumnNum = 4;
-  d->thumbnailWidth = 128;
-}
 
-//----------------------------------------------------------------------------
-ctkDICOMThumbnailListWidget::~ctkDICOMThumbnailListWidget()
-{
-}
+  ctkFlowLayout* flowLayout = new ctkFlowLayout();
+  d->scrollAreaContentWidget->setLayout(flowLayout);
 
-void ctkDICOMThumbnailListWidget::addTestThumbnail(int count){
-  Q_D(ctkDICOMThumbnailListWidget);
-  for(int i = 0; i<count; i++){
-    ctkDICOMThumbnailWidget* widget = new ctkDICOMThumbnailWidget(this);
-    QPixmap pixmap(64, 64);
-    pixmap.fill(Qt::blue);
-    QString text("Thumbnail: ");
-    widget->setMaximumWidth(d->thumbnailWidth);
-    widget->setText(text);
-    widget->setPixmap(pixmap);
-    d->addThumbnail(widget);
-  }
-  d->rearrangeThumbnails();
-}
+  for(int i=0; i<326; i++){
+    ctkDICOMThumbnailWidget* widget = new ctkDICOMThumbnailWidget(d->scrollAreaContentWidget);
 
-void ctkDICOMThumbnailListWidget::setThumbnailWidth(int width){
-  Q_D(ctkDICOMThumbnailListWidget);
-  
-  d->thumbnailWidth = width;
-
-  d->maxColumnNum = this->width()/d->thumbnailWidth;
-  d->rearrangeThumbnails();
+    QString str("thumbnail");
+    widget->setText(str);
+    QPixmap pix(64, 64);
+    pix.fill(Qt::blue);
+    widget->setPixmap(pix);
+    flowLayout->addWidget(widget);
+  }
 }
 
-void ctkDICOMThumbnailListWidget::resizeEvent ( QResizeEvent * event ){
-  Q_D(ctkDICOMThumbnailListWidget);
+//----------------------------------------------------------------------------
+ctkDICOMThumbnailListWidget::~ctkDICOMThumbnailListWidget()
+{
   
-  d->maxColumnNum = event->size().width()/d->thumbnailWidth;
-  d->rearrangeThumbnails();
 }
 
 void ctkDICOMThumbnailListWidget::setModelIndex(const QModelIndex &index){
   Q_D(ctkDICOMThumbnailListWidget);
 
-  d->clearAllThumbnails();
-  this->addTestThumbnail(index.model()->rowCount(index));
-  
 }

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

@@ -38,15 +38,11 @@ public:
   explicit ctkDICOMThumbnailListWidget(QWidget* parent=0);
   virtual ~ctkDICOMThumbnailListWidget();
 
-  void setThumbnailWidth(int width);
-
-  void addTestThumbnail(int count = 10);
   void setModelIndex(const QModelIndex& index);
   
 protected:
   QScopedPointer<ctkDICOMThumbnailListWidgetPrivate> d_ptr;
 
-  virtual void resizeEvent(QResizeEvent * event); 
 private:
   Q_DECLARE_PRIVATE(ctkDICOMThumbnailListWidget);
   Q_DISABLE_COPY(ctkDICOMThumbnailListWidget);