Loading...
Searching...
No Matches
FirstUserInput.hpp
1#pragma once
2#include <QEvent>
3#include <QPointer>
4#include <QWidget>
5
6#include <functional>
7
8namespace score
9{
14class FirstUserInput final : public QObject
15{
16public:
17 FirstUserInput(QWidget* widget, QObject* context, std::function<void()> f)
18 : QObject{context}
19 , m_widget{widget}
20 , m_f{std::move(f)}
21 {
22 widget->installEventFilter(this);
23 }
24
25 ~FirstUserInput() override
26 {
27 if(m_widget)
28 m_widget->removeEventFilter(this);
29 }
30
31private:
32 bool eventFilter(QObject*, QEvent* event) override
33 {
34 switch(event->type())
35 {
36 case QEvent::MouseButtonPress:
37 case QEvent::MouseButtonDblClick:
38 case QEvent::Wheel:
39 case QEvent::TabletPress:
40 case QEvent::TouchBegin:
41 if(auto f = std::exchange(m_f, {}))
42 f();
43 deleteLater();
44 break;
45 default:
46 break;
47 }
48 return false;
49 }
50
51 QPointer<QWidget> m_widget;
52 std::function<void()> m_f;
53};
54}
Definition FirstUserInput.hpp:15
Base toolkit upon which the software is built.
Definition Application.cpp:108