Sfoglia il codice sorgente

Added API to set/get icons for search and clear actions.

Sascha Zelzer 13 anni fa
parent
commit
d0b7e47ea5
2 ha cambiato i file con 62 aggiunte e 2 eliminazioni
  1. 47 2
      Libs/Widgets/ctkSearchBox.cpp
  2. 15 0
      Libs/Widgets/ctkSearchBox.h

+ 47 - 2
Libs/Widgets/ctkSearchBox.cpp

@@ -181,6 +181,51 @@ bool ctkSearchBox::alwaysShowClearIcon()const
 }
 
 // --------------------------------------------------
+void ctkSearchBox::setSearchIcon(const QIcon& icon)
+{
+  Q_D(ctkSearchBox);
+  d->searchIcon = icon;
+  this->update();
+}
+
+// --------------------------------------------------
+QIcon ctkSearchBox::searchIcon()const
+{
+  Q_D(const ctkSearchBox);
+  return d->searchIcon;
+}
+
+// --------------------------------------------------
+void ctkSearchBox::setClearIcon(const QIcon& icon)
+{
+  Q_D(ctkSearchBox);
+  d->clearIcon = icon;
+  this->update();
+}
+
+// --------------------------------------------------
+QIcon ctkSearchBox::clearIcon()const
+{
+  Q_D(const ctkSearchBox);
+  return d->clearIcon;
+}
+
+// --------------------------------------------------
+void ctkSearchBox::setClearIconMode(QIcon::Mode mode)
+{
+  Q_D(ctkSearchBox);
+  d->clearIconMode = mode;
+  this->update();
+}
+
+// --------------------------------------------------
+QIcon::Mode ctkSearchBox::clearIconMode()const
+{
+  Q_D(const ctkSearchBox);
+  return d->clearIconMode;
+}
+
+// --------------------------------------------------
 void ctkSearchBox::paintEvent(QPaintEvent * event)
 {
   Q_D(ctkSearchBox);
@@ -251,14 +296,14 @@ void ctkSearchBox::paintEvent(QPaintEvent * event)
   // Draw clearIcon
   if (!d->hideClearIcon)
     {
-    QPixmap closePixmap = d->clearIcon.pixmap(cRect.size(),d->clearIconMode);
+    QPixmap closePixmap = d->clearIcon.pixmap(cRect.size(),this->isEnabled() ? d->clearIconMode : QIcon::Disabled);
     this->style()->drawItemPixmap(&p, cRect, Qt::AlignCenter, closePixmap);
     }
 
   // Draw searchIcon
   if (d->showSearchIcon)
     {
-    QPixmap searchPixmap = d->searchIcon.pixmap(sRect.size());
+    QPixmap searchPixmap = d->searchIcon.pixmap(sRect.size(), this->isEnabled() ? QIcon::Normal : QIcon::Disabled);
     this->style()->drawItemPixmap(&p, sRect, Qt::AlignCenter, searchPixmap);
     }
 }

+ 15 - 0
Libs/Widgets/ctkSearchBox.h

@@ -23,6 +23,7 @@
 
 // QT includes
 #include <QLineEdit>
+#include <QIcon>
 
 // CTK includes
 #include "ctkWidgetsExport.h"
@@ -53,6 +54,11 @@ class CTK_WIDGETS_EXPORT ctkSearchBox : public QLineEdit
 #endif
   Q_PROPERTY(bool showSearchIcon READ showSearchIcon WRITE setShowSearchIcon)
 
+  Q_PROPERTY(QIcon searchIcon READ searchIcon WRITE setSearchIcon)
+  Q_PROPERTY(QIcon clearIcon READ clearIcon WRITE setClearIcon)
+
+  Q_PROPERTY(QIcon::Mode clearIconMode READ clearIconMode WRITE setClearIconMode)
+
 public:
   /// Superclass typedef
   typedef QLineEdit Superclass;
@@ -71,6 +77,15 @@ public:
   void setAlwaysShowClearIcon(bool);
   bool alwaysShowClearIcon()const;
 
+  void setSearchIcon(const QIcon&);
+  QIcon searchIcon()const;
+
+  void setClearIcon(const QIcon&);
+  QIcon clearIcon()const;
+
+  void setClearIconMode(QIcon::Mode);
+  QIcon::Mode clearIconMode()const;
+
 protected Q_SLOTS:
   /// Change the clear icon's state to enabled or disabled.
   void updateClearButtonState();