diff --git a/src/gui/lineedit/src/lineedit.cpp b/src/gui/lineedit/src/lineedit.cpp index 80bf67465..8de914ab0 100644 --- a/src/gui/lineedit/src/lineedit.cpp +++ b/src/gui/lineedit/src/lineedit.cpp @@ -8,48 +8,65 @@ ****************************************************************************/ #include "lineedit.h" -#include +#include #include -#include +#include +#include LineEdit::LineEdit(QWidget *parent) - : QLineEdit(parent) + : QLineEdit(parent) { - searchButton = new QToolButton(this); - QPixmap pixmap1(":/lineeditimages/search.png"); - searchButton->setIcon(QIcon(pixmap1)); - searchButton->setIconSize(pixmap1.size()); - searchButton->setCursor(Qt::ArrowCursor); - searchButton->setStyleSheet("QToolButton { border: none; padding: 2px; }"); - clearButton = new QToolButton(this); - QPixmap pixmap2(":/lineeditimages/clear_left.png"); - clearButton->setIcon(QIcon(pixmap2)); - clearButton->setIconSize(pixmap2.size()); - clearButton->setCursor(Qt::ArrowCursor); - clearButton->setStyleSheet("QToolButton { border: none; padding: 2px; }"); - clearButton->setToolTip(tr("Clear the text")); - 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; padding-left: %2px; }").arg(clearButton->sizeHint().width() + frameWidth + 1).arg(clearButton->sizeHint().width() + frameWidth + 1)); - QSize msz = minimumSizeHint(); - setMinimumSize(qMax(msz.width(), clearButton->sizeHint().width() + searchButton->sizeHint().width() + frameWidth * 2 + 2), - qMax(msz.height(), clearButton->sizeHint().height() + frameWidth * 2 + 2)); + int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + + QPixmap pixmap1(":/lineeditimages/search.png"); + searchButton = new QToolButton(this); + searchButton->setIcon(QIcon(pixmap1)); + searchButton->setIconSize(pixmap1.size()); + searchButton->setCursor(Qt::ArrowCursor); + searchButton->setStyleSheet("QToolButton { border: none; padding: 2px; }"); + + int clearButtonSizeHintWidth = 0; + int clearButtonSizeHintHeight = 0; +#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) + QPixmap pixmap2(":/lineeditimages/clear_left.png"); + clearButton = new QToolButton(this); + clearButton->setIcon(QIcon(pixmap2)); + clearButton->setIconSize(pixmap2.size()); + clearButton->setCursor(Qt::ArrowCursor); + clearButton->setStyleSheet("QToolButton { border: none; padding: 2px; }"); + clearButton->setToolTip(tr("Clear the text")); + clearButton->hide(); + connect(clearButton, SIGNAL(clicked()), this, SLOT(clear())); + connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(updateCloseButton(const QString &))); + + clearButtonSizeHintWidth = clearButton->sizeHint().width(); + clearButtonSizeHintHeight = clearButton->sizeHint().height(); + setStyleSheet(QString("QLineEdit { padding-left: %1px; padding-right: %2px; }").arg(searchButton->sizeHint().width()).arg(clearButtonSizeHintWidth)); +#else + setClearButtonEnabled(true); + setStyleSheet(QString("QLineEdit { padding-left: %1px; }").arg(searchButton->sizeHint().width())); // padding between text and widget borders +#endif + + QSize msz = sizeHint(); + setMinimumSize(qMax(msz.width(), searchButton->sizeHint().width() + clearButtonSizeHintWidth), + std::max({ msz.height(), searchButton->sizeHint().height(), clearButtonSizeHintHeight }) + frameWidth * 2); } -void LineEdit::resizeEvent(QResizeEvent *) +void LineEdit::resizeEvent(QResizeEvent *e) { - QSize sz = searchButton->sizeHint(); - int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - searchButton->move(rect().left() + frameWidth, (rect().bottom() + 2 - sz.height())/2); - sz = clearButton->sizeHint(); - clearButton->move(rect().right() - frameWidth - sz.width(), - (rect().bottom() + 2 - sz.height())/2); + int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + + QSize sz = searchButton->sizeHint(); + searchButton->move(frameWidth, (e->size().height() - sz.height()) / 2); +#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) + QSize cz = clearButton->sizeHint(); + clearButton->move((e->size().width() - frameWidth - cz.width()), (e->size().height() - sz.height()) / 2); +#endif } -void LineEdit::updateCloseButton(const QString& text) +void LineEdit::updateCloseButton(const QString &text) { - clearButton->setVisible(!text.isEmpty()); +#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) + clearButton->setVisible(!text.isEmpty()); +#endif } - diff --git a/src/gui/lineedit/src/lineedit.h b/src/gui/lineedit/src/lineedit.h index df3cbe590..74ee9b423 100644 --- a/src/gui/lineedit/src/lineedit.h +++ b/src/gui/lineedit/src/lineedit.h @@ -12,26 +12,26 @@ #include -QT_BEGIN_NAMESPACE class QToolButton; -QT_END_NAMESPACE class LineEdit : public QLineEdit { - Q_OBJECT + Q_OBJECT public: - LineEdit(QWidget *parent = 0); + LineEdit(QWidget *parent); protected: - void resizeEvent(QResizeEvent *); + void resizeEvent(QResizeEvent *e); private slots: - void updateCloseButton(const QString &text); + void updateCloseButton(const QString &text); private: - QToolButton *clearButton; - QToolButton *searchButton; + QToolButton *searchButton; +#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) + QToolButton *clearButton; +#endif }; #endif // LIENEDIT_H diff --git a/src/searchengine/searchengine.cpp b/src/searchengine/searchengine.cpp index f96c7eea8..54e50c035 100644 --- a/src/searchengine/searchengine.cpp +++ b/src/searchengine/searchengine.cpp @@ -64,7 +64,7 @@ /*SEARCH ENGINE START*/ SearchEngine::SearchEngine(MainWindow* parent) : QWidget(parent) - , search_pattern(new LineEdit) + , search_pattern(new LineEdit(this)) , mp_mainWindow(parent) { setupUi(this);