summaryrefslogtreecommitdiffstats
path: root/doc/src/examples/video-qml-paint-rate.qdocinc
blob: 2a645d7f23bed90912ea49d5d9a03bf7895d3757 (plain)
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
The QML painting rate is calculated by first creating a \l{QObject}-derived
class called PaintEventMonitor, which allows its client to provide a
\l{QWidget} to be monitored, and which emits a signal when that widget
is repainted:

\quotefromfile video/snippets/painteventmonitor/painteventmonitor.h
\skipto class PaintEventMonitor
\printuntil targetChanged)
\dots
\skipto protected
\printuntil signals:
\skipto void targetPainted
\printuntil ;
\skipto private
\printuntil };

The signal is generated by installing an event filter on the target \l{QWidget}:

\quotefromfile video/snippets/painteventmonitor/painteventmonitor.cpp
\skipto PaintEventMonitor::eventFilter
\printuntil }

A second class, FrequencyMonitor, is used to turn the stream of targetPainted()
signals into an instantaneous and an averaged frequency:

\quotefromfile video/snippets/frequencymonitor/frequencymonitor.h
\skipto class FrequencyMonitor : public QObject
\printuntil Q_OBJECT
\skipto Q_PROPERTY(qreal instantaneousFrequency
\printuntil averageFrequencyChanged)
\skipto public
\printuntil :
\dots
\skipto static void qmlRegisterType
\printuntil ;
\skipto public slots
\printuntil notify();
\skipto };
\printline };

The FrequencyMonitor class is exposed to QML like this

\quotefromfile video/snippets/frequencymonitor/frequencymonitordeclarative.cpp
\skipto FrequencyMonitor::qmlRegisterType
\printuntil }

and its data is displayed by defining a QML item called FrequencyItem, like this:

\quotefromfile video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml
\skipto import FrequencyMonitor
\printuntil id: root
\dots
\skipto function notify
\printuntil id: monitor
\skipto onAverageFrequencyChanged
\printuntil {
\skipto instantaneousFrequencyText
\printuntil /^\}/

The result looks like this:

\image video-qml-paint-rate.png