30 QLineEdit(parent), clearButton(new QToolButton(this))
32 QIcon icon = QIcon::fromTheme(
"edit-clear", QIcon(
":/icon/dialog-close.ico"));
33 clearButton->setIcon(icon);
34 clearButton->setCursor(Qt::ArrowCursor);
35 clearButton->setStyleSheet(
"QToolButton { border: none; padding: 0px; }");
38 int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
39 setStyleSheet(QString(
"QLineEdit { padding-right: %1px; } ")
40 .arg(clearButton->sizeHint().width() + frameWidth + 1));
41 QSize minSize = minimumSizeHint();
42 setMinimumSize(qMax(minSize.width(), clearButton->sizeHint().height() + frameWidth * 2 + 2),
43 qMax(minSize.height(), clearButton->sizeHint().height() + frameWidth * 2 + 2));
45 connect(clearButton, SIGNAL(clicked()),
this, SLOT(clear()));
47 this, SIGNAL(textChanged(
const QString&)),
this, SLOT(updateClearButton(
const QString&)));
53 QSize size = clearButton->sizeHint();
54 int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
55 clearButton->move(rect().right() - frameWidth - size.width(),
56 (rect().bottom() + 1 - size.height()) / 2);
60 gui::ClearableLineEdit::updateClearButton(
const QString& text)
62 clearButton->setVisible(!text.isEmpty());