1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
// Copyright (C) 2015 LG Electronics Inc, author: <mikko.levonmaa@lge.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QGuiApplication>
#include <QQmlEngine>
#include <QQmlFileSelector>
#include <QQmlContext>
#include <QQuickView>
#include "shmwindow.h"
class Filter : public QObject
{
Q_OBJECT
Q_PROPERTY(bool sync READ getSync NOTIFY syncChanged)
public:
Filter()
{
sync = false;
}
bool eventFilter(QObject *object, QEvent *event)
{
Q_UNUSED(object);
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->key() == Qt::Key_Space) {
toggleSync(quick);
toggleSync(shm);
}
}
return false;
}
void toggleSync(QWindow *w)
{
}
bool getSync() const
{
return sync;
}
Q_SIGNALS:
void syncChanged();
public:
QWindow *quick;
QWindow *shm;
bool sync;
};
int main(int argc, char* argv[])
{
QGuiApplication app(argc, argv);
QQuickView view;
view.connect(view.engine(), SIGNAL(quit()), &app, SLOT(quit()));
view.setResizeMode(QQuickView::SizeRootObjectToView);
Filter f;
view.rootContext()->setContextProperty("syncStatus", &f);
view.installEventFilter(&f);
view.setSource(QUrl("qrc:/main.qml"));
view.show();
QQuickView child(&view);
child.connect(child.engine(), SIGNAL(quit()), &app, SLOT(quit()));
child.setSource(QUrl("qrc:/child.qml"));
child.setResizeMode(QQuickView::SizeRootObjectToView);
child.setGeometry(QRect(150, 70, 100, 100));
child.show();
ShmWindow shm(&view);
shm.setGeometry(QRect(30, 30, 50, 50));
shm.show();
f.quick = &child;
f.shm = &shm;
return app.exec();
}
#include "main.moc"
|