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
87
88
|
1. Description
2. Running
3. Building
4. QPA native interface
5. QPA properties
1. Description
--------------
QtUbuntu contains a QPA (Qt Platform Abstraction) plugin based on the Ubuntu
Platform API
2 Running
---------
Considering the QPA plugin path is correctly set using either the
QT_QPA_PLATFORM_PLUGIN_PATH environment variable or the
"-platformpluginpath" command line switch, the following commands
can be used to run with the Ubuntu QPA plugin:
$ qmlscene -platform ubuntumirclient Foo.qml
$ QT_QPA_PLATFORM=ubuntumirclient qmlscene Foo.qml
The QPA plugins expose the following environment variables:
QTUBUNTU_SWAPINTERVAL: Specifies the required swap interval as an
integer. 1 by default.
QTUBUNTU_MULTISAMPLE: Enables multisampling with using 4 samples
per fragment.
QTUBUNTU_NO_THREADED_OPENGL: Disables QtQuick threaded OpenGL
rendering.
QTUBUNTU_NO_INPUT: Disables touchscreen and buttons.
QTUBUNTU_ICON_THEME: Specifies the default icon theme name.
3. Building
-----------
To compile QtUbuntu, create the makefiles with qmake and build with
make:
$ qmake
$ make
By default, QtUbuntu compiles a release build. To compile a debug
build, the following qmake command should be used:
$ qmake CONFIG+=debug
4. QPA native interface
-----------------------
The QPA plugin exposes a native interface allowing to retrieve
native handles and to filter out native events. In order to retrieve
native handles, the following code can be used:
#include <QtGui/QGuiApplication>
#include <qpa/qplatformnativeinterface.h>
...
QQuickView* view = new QQuickView();
...
QPlatformNativeInterface* native = QGuiApplication::platformNativeInterface();
printf("app: eglcontext=%p egldisplay=%p\n",
native->nativeResourceForContext("eglcontext", view->openglContext()),
native->nativeResourceForWindow("egldisplay", view));
Note that handles aren't valid until the application mainloop is started. The
qmake .pro needs to add private gui include directories using
QT += gui-private
Some events exposed in the input compatibility layer can't be
directly mapped to Qt. In order to retrieve such events, a native
event filter needs to be installed. To do so, a
QAbstractNativeEventFilter [1] filtering out "Event" events needs to
be implemented and installed using
QCoreApplication::installNativeEventFilter [2].
[1] http://doc-snapshot.qt-project.org/5.0/qabstractnativeeventfilter.html
[2] http://doc-snapshot.qt-project.org/5.0/qcoreapplication.html#installNativeEventFilter
|