blob: 245d0ddb2daa17802e7ebcfe43f68072672f3167 (
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
|
.. _qml-chapter2-methods:
Extending QML - Connecting to C++ Methods and Signals
=====================================================
This is the second of a series of 6 examples forming a tutorial about extending
QML with Python.
Suppose we want ``PieChart`` to have a ``clearChart()`` method that erases the
chart and then emits a ``chartCleared`` signal. Our ``app.qml`` would be able
to call ``clearChart()`` and receive ``chartCleared()`` signals like this:
.. literalinclude:: app.qml
:lineno-start: 4
:lines: 4-32
To do this, we add a ``clearChart()`` method and a ``chartCleared()`` signal
to our C++ class:
.. literalinclude:: methods.py
:lineno-start: 54
:lines: 54-58
The use of the ``Slot`` decorator makes the ``clearChart()`` method available
to the Qt Meta-Object system, and in turn, to QML. The method simply changes
the color to ``Qt::transparent``, repaints the chart, then emits the
``chartCleared()`` signal:
.. literalinclude:: methods.py
:lineno-start: 21
:lines: 21-24
Now when we run the application and click the window, the pie chart disappears,
and the application outputs::
qml: The chart has been cleared
|