aboutsummaryrefslogtreecommitdiffstats
path: root/examples/qml/tutorials/extending-qml/chapter2-methods/doc/chapter2-methods.rst
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