aboutsummaryrefslogtreecommitdiff
path: root/libs/uibase/src/lineeditclear.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/uibase/src/lineeditclear.cpp')
-rw-r--r--libs/uibase/src/lineeditclear.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/libs/uibase/src/lineeditclear.cpp b/libs/uibase/src/lineeditclear.cpp
new file mode 100644
index 0000000..476c874
--- /dev/null
+++ b/libs/uibase/src/lineeditclear.cpp
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (c) 2007 Trolltech ASA <info@trolltech.com>
+**
+** Use, modification and distribution is allowed without limitation,
+** warranty, liability or support of any kind.
+**
+****************************************************************************/
+
+#include <uibase/lineeditclear.h>
+#include <QStyle>
+#include <QToolButton>
+
+namespace MOBase
+{
+
+LineEditClear::LineEditClear(QWidget* parent) : QLineEdit(parent)
+{
+ clearButton = new QToolButton(this);
+ QPixmap pixmap(":/MO/gui/edit_clear");
+ clearButton->setIcon(QIcon(pixmap));
+ clearButton->setIconSize(pixmap.size());
+ clearButton->setCursor(Qt::ArrowCursor);
+ clearButton->setStyleSheet("QToolButton { border: none; padding: 0px; }");
+ clearButton->hide();
+ connect(clearButton, SIGNAL(clicked()), this, SLOT(clear()));
+ connect(this, SIGNAL(textChanged(const QString&)), this,
+ SLOT(updateCloseButton(const QString&)));
+ int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
+ setStyleSheet(QString("QLineEdit { padding-right: %1px; } ")
+ .arg(clearButton->sizeHint().width() + frameWidth + 1));
+ /* QSize msz = minimumSizeHint();
+ setMinimumSize(qMax(msz.width(), clearButton->sizeHint().height() + frameWidth * 2 +
+ 2), qMax(msz.height(), clearButton->sizeHint().height() + frameWidth * 2 + 2));*/
+}
+
+void LineEditClear::resizeEvent(QResizeEvent*)
+{
+ QSize sz = clearButton->sizeHint();
+ int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
+ clearButton->move(rect().right() - frameWidth - sz.width(),
+ (rect().bottom() + 1 - sz.height()) / 2);
+}
+
+void LineEditClear::updateCloseButton(const QString& text)
+{
+ clearButton->setVisible(!text.isEmpty());
+}
+
+} // namespace MOBase