File tree Expand file tree Collapse file tree 3 files changed +60
-0
lines changed Expand file tree Collapse file tree 3 files changed +60
-0
lines changed Original file line number Diff line number Diff line change @@ -22,4 +22,6 @@ qt_add_qml_module(libscratchcpp-gui
2222 renderedtarget.h
2323 targetpainter.cpp
2424 targetpainter.h
25+ keyeventhandler.cpp
26+ keyeventhandler.h
2527)
Original file line number Diff line number Diff line change 1+ // SPDX-License-Identifier: LGPL-3.0-or-later
2+
3+ #include < QKeyEvent>
4+
5+ #include " keyeventhandler.h"
6+
7+ using namespace scratchcppgui ;
8+
9+ KeyEventHandler::KeyEventHandler (QObject *parent) :
10+ QObject(parent)
11+ {
12+ }
13+
14+ bool KeyEventHandler::eventFilter (QObject *obj, QEvent *event)
15+ {
16+ switch (event->type ()) {
17+ case QEvent::KeyPress: {
18+ QKeyEvent *keyEvent = static_cast <QKeyEvent *>(event);
19+ emit keyPressed (static_cast <Qt::Key>(keyEvent->key ()), keyEvent->text ());
20+ break ;
21+ }
22+
23+ case QEvent::KeyRelease: {
24+ QKeyEvent *keyEvent = static_cast <QKeyEvent *>(event);
25+ emit keyReleased (static_cast <Qt::Key>(keyEvent->key ()), keyEvent->text ());
26+ break ;
27+ }
28+
29+ default :
30+ break ;
31+ }
32+
33+ return QObject::eventFilter (obj, event);
34+ }
Original file line number Diff line number Diff line change 1+ // SPDX-License-Identifier: LGPL-3.0-or-later
2+
3+ #pragma once
4+
5+ #include < QObject>
6+
7+ namespace scratchcppgui
8+ {
9+
10+ class KeyEventHandler : public QObject
11+ {
12+ Q_OBJECT
13+ public:
14+ explicit KeyEventHandler (QObject *parent = nullptr );
15+
16+ signals:
17+ void keyPressed (Qt::Key key, const QString &text);
18+ void keyReleased (Qt::Key key, const QString &text);
19+
20+ protected:
21+ bool eventFilter (QObject *obj, QEvent *event) override ;
22+ };
23+
24+ } // namespace scratchcppgui
You can’t perform that action at this time.
0 commit comments