Kaynağa Gözat

ENH: Added method to get/set filter expression

Andras Lasso 8 yıl önce
ebeveyn
işleme
40abbdb71c

+ 10 - 1
Libs/DICOM/Widgets/ctkDICOMObjectListWidget.cpp

@@ -100,6 +100,7 @@ public:
   QStringList fileList;
   ctkDICOMObjectModel* dicomObjectModel;
   qRecursiveTreeProxyFilter* filterModel;
+  QString filterExpression;
 };
 
 //----------------------------------------------------------------------------
@@ -331,7 +332,7 @@ QString ctkDICOMObjectListWidget::metadataAsText(bool allFiles /*=false*/)
 
       qRecursiveTreeProxyFilter* afilterModel = new qRecursiveTreeProxyFilter();
       afilterModel->setSourceModel(aDicomObjectModel);
-      d->setFilterExpressionInModel(afilterModel, d->metadataSearchBox->text());
+      d->setFilterExpressionInModel(afilterModel, d->filterExpression);
 
       QString thisFileMetadata = d->dicomObjectModelAsString(afilterModel, QModelIndex(), 0, fileName + "\t");
 
@@ -399,5 +400,13 @@ void ctkDICOMObjectListWidget::onFilterChanged()
 void ctkDICOMObjectListWidget::setFilterExpression(const QString& expr)
 {
   Q_D(ctkDICOMObjectListWidget);
+  d->filterExpression = expr;
   d->setFilterExpressionInModel(d->filterModel, expr);
 }
+
+//------------------------------------------------------------------------------
+QString ctkDICOMObjectListWidget::filterExpression()
+{
+  Q_D(ctkDICOMObjectListWidget);
+  return d->filterExpression;
+}

+ 9 - 1
Libs/DICOM/Widgets/ctkDICOMObjectListWidget.h

@@ -35,6 +35,7 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMObjectListWidget : public QWidget
   Q_OBJECT
   Q_PROPERTY(QString currentFile READ currentFile WRITE setCurrentFile)
   Q_PROPERTY(QStringList fileList READ fileList WRITE setFileList)
+  Q_PROPERTY(QString filterExpression READ filterExpression WRITE setFilterExpression)
 
 public:
   typedef QWidget Superclass;
@@ -44,6 +45,13 @@ public:
   QString currentFile();
   QStringList fileList();
 
+  /// Filter displayed metadata based on content in Tag, Attribute, and Value columns.
+  /// Simple search : enter any text to show only those items that contains the text.
+  /// Use ? and * wildcards to represent any single character or sequence of characters.
+  /// Regular expression search: Enter regexp: followed by a regular expression.
+  /// For example, show 3 specific tags, enter : regexp : 0010, 0010 | 0010, 0020 | 0010, 0030
+  QString filterExpression();
+
   /// Get metadata tree as plain text
   QString metadataAsText(bool allFiles = false);
 
@@ -63,10 +71,10 @@ Q_SIGNALS:
 public Q_SLOTS:
   void setCurrentFile(const QString& newFileName);
   void setFileList(const QStringList& fileList);
+  void setFilterExpression(const QString& expr);
 
 protected Q_SLOTS:
   void itemDoubleClicked(const QModelIndex&);
-  void setFilterExpression(const QString& expr);
   void onFilterChanged();
   void updateWidget();
   void copyPath();