瀏覽代碼

Improve query usability

* Set focus for name search widget on creation so user
can just start typing

* Make return key in any query text field trigger a new search
Steve Pieper 13 年之前
父節點
當前提交
c7f92ba5a2

+ 1 - 0
Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp

@@ -99,6 +99,7 @@ void ctkDICOMQueryRetrieveWidgetPrivate::init()
   Q_Q(ctkDICOMQueryRetrieveWidget);
   this->setupUi(q);
 
+  QObject::connect(this->QueryWidget, SIGNAL(returnPressed()), q, SLOT(query()));
   QObject::connect(this->QueryButton, SIGNAL(clicked()), q, SLOT(query()));
   QObject::connect(this->RetrieveButton, SIGNAL(clicked()), q, SLOT(retrieve()));
   QObject::connect(this->CancelButton, SIGNAL(clicked()), q, SLOT(cancel()));

+ 20 - 1
Libs/DICOM/Widgets/ctkDICOMQueryWidget.cpp

@@ -73,6 +73,8 @@ ctkDICOMQueryWidget::ctkDICOMQueryWidget(QWidget* _parent):Superclass(_parent),
   
   d->setupUi(this);
 
+  d->NameSearch->setFocus(Qt::PopupFocusReason);
+
   connect(d->NameSearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
   connect(d->StudySearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
   connect(d->SeriesSearch, SIGNAL(textChanged(QString)), this, SLOT(startTimer()));
@@ -82,6 +84,11 @@ ctkDICOMQueryWidget::ctkDICOMQueryWidget(QWidget* _parent):Superclass(_parent),
   connect(d->ModalityWidget, SIGNAL(selectedModalitiesChanged(QStringList)), this, SLOT(startTimer()));
 
   connect(d->SearchTimer, SIGNAL(timeout()), this, SIGNAL(parameterChanged()));
+
+  connect(d->NameSearch, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
+  connect(d->StudySearch, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
+  connect(d->SeriesSearch, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
+  connect(d->IdSearch, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
 }
 
 //----------------------------------------------------------------------------
@@ -98,6 +105,11 @@ ctkDICOMQueryWidget::~ctkDICOMQueryWidget()
   disconnect(d->ModalityWidget, SIGNAL(selectedModalitiesChanged(QStringList)), this, SLOT(startTimer()));
 
   disconnect(d->SearchTimer, SIGNAL(timeout()), this, SIGNAL(parameterChanged()));
+
+  disconnect(d->NameSearch, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
+  disconnect(d->StudySearch, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
+  disconnect(d->SeriesSearch, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
+  disconnect(d->IdSearch, SIGNAL(returnPressed()), this, SLOT(onReturnPressed()));
 }
 
 
@@ -132,9 +144,16 @@ QMap<QString,QVariant> ctkDICOMQueryWidget::parameters()
 }
 
 //----------------------------------------------------------------------------
-void ctkDICOMQueryWidget::startTimer(){
+void ctkDICOMQueryWidget::startTimer()
+{
   Q_D(ctkDICOMQueryWidget);
 
   d->SearchTimer->stop();
   d->SearchTimer->start(d->SearchIdleTime);
 }
+
+//----------------------------------------------------------------------------
+void ctkDICOMQueryWidget::onReturnPressed()
+{
+  emit returnPressed();
+}

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

@@ -50,8 +50,12 @@ Q_SIGNALS:
   /// This signal is emitted when any of the search parameters changed.
   void parameterChanged();
 
+  /// This signal is emitted when the user hits return in any of the line edits
+  void returnPressed();
+
 protected Q_SLOTS:
   void startTimer();
+  void onReturnPressed();
 };
 
 #endif