1 #include "searchlineedit.h" 2 #include "autocomplete.h" 3 #include "iconutils.h" 4 SearchLineEdit(QWidget * parent)5SearchLineEdit::SearchLineEdit(QWidget *parent) : QLineEdit(parent) { 6 setClearButtonEnabled(true); 7 setPlaceholderText(tr("Search")); 8 9 QAction *searchAction = new QAction(); 10 IconUtils::setIcon(searchAction, "edit-find"); 11 addAction(searchAction, QLineEdit::LeadingPosition); 12 13 // completion 14 autoComplete = new AutoComplete(this, this); 15 connect(autoComplete, SIGNAL(suggestionAccepted(Suggestion *)), 16 SIGNAL(suggestionAccepted(Suggestion *))); 17 18 connect(this, SIGNAL(returnPressed()), SLOT(returnPressed())); 19 } 20 menu() const21QMenu *SearchLineEdit::menu() const { 22 return nullptr; 23 } 24 setMenu(QMenu * menu)25void SearchLineEdit::setMenu(QMenu *menu) { 26 Q_UNUSED(menu); 27 } 28 enableSuggest()29void SearchLineEdit::enableSuggest() { 30 autoComplete->enableSuggest(); 31 } 32 preventSuggest()33void SearchLineEdit::preventSuggest() { 34 autoComplete->preventSuggest(); 35 } 36 setSuggester(Suggester * suggester)37void SearchLineEdit::setSuggester(Suggester *suggester) { 38 autoComplete->setSuggester(suggester); 39 } 40 getAutoComplete()41AutoComplete *SearchLineEdit::getAutoComplete() { 42 return autoComplete; 43 } 44 emitTextChanged(const QString & text)45void SearchLineEdit::emitTextChanged(const QString &text) { 46 autoComplete->enableSuggest(); 47 emit QLineEdit::textEdited(text); 48 } 49 returnPressed()50void SearchLineEdit::returnPressed() { 51 QString s = text().simplified(); 52 if (!s.isEmpty()) { 53 autoComplete->preventSuggest(); 54 emit search(s); 55 } 56 } 57 getLineEdit()58QLineEdit *SearchLineEdit::getLineEdit() { 59 return this; 60 } 61 toWidget()62QWidget *SearchLineEdit::toWidget() { 63 return this; 64 } 65