diff options
Diffstat (limited to 'src/widgets')
| -rw-r--r-- | src/widgets/searchbox.cpp | 31 | ||||
| -rw-r--r-- | src/widgets/searchbox.hpp | 20 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/widgets/searchbox.cpp b/src/widgets/searchbox.cpp new file mode 100644 index 0000000..67e48f9 --- /dev/null +++ b/src/widgets/searchbox.cpp @@ -0,0 +1,31 @@ +#include "searchbox.hpp" + +#include <QKeyEvent> +#include <QDebug> + +SearchBox::SearchBox(QWidget * parent) : QLineEdit(parent) +{} + +void SearchBox::keyPressEvent(QKeyEvent *event) +{ + if(event->key() == Qt::Key_Return || event->key() == Qt::Key_F3) { + if (event->modifiers() == Qt::ShiftModifier) { + emit searchPrev(); + } + else { + emit searchNext(); + } + } else { + QLineEdit::keyPressEvent(event); + } +} + +void SearchBox::keyReleaseEvent(QKeyEvent *event) +{ + if(event->key() == Qt::Key_Return) { + // Eat the event + } else { + QLineEdit::keyReleaseEvent(event); + } +} + diff --git a/src/widgets/searchbox.hpp b/src/widgets/searchbox.hpp new file mode 100644 index 0000000..fe589ff --- /dev/null +++ b/src/widgets/searchbox.hpp @@ -0,0 +1,20 @@ +#ifndef SEARCHBOX_HPP +#define SEARCHBOX_HPP + +#include <QLineEdit> + +class SearchBox : public QLineEdit +{ + Q_OBJECT +public: + explicit SearchBox(QWidget *parent = nullptr); + +signals: + void searchNext(); + void searchPrev(); +public: + void keyPressEvent(QKeyEvent *event) override; + void keyReleaseEvent(QKeyEvent *event) override; +}; + +#endif // SEARCHBOX_HPP |
