Skip to content

Commit 99298e9

Browse files
committed
Add KeyEventHandler class
1 parent f39a4a1 commit 99298e9

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

ScratchCPPGui/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff 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
)

ScratchCPPGui/keyeventhandler.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
}

ScratchCPPGui/keyeventhandler.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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

0 commit comments

Comments
 (0)