Enviar señales

Envíe señales de un punto a otro.

De código C++ a código QML.

Útil para informar el fín de una tarea como instalación terminada o para informar de fin de reproducción de una canción o video.

1. Siga los pasos de 1 a 5 indicados en:

Conectar funcionalidad C++ con la interfaz QML

sustituyendo el paso 1 y 2 por:

// nuevo código en myapp/src/code/backend.h
signals:    
    void updated(QString data);
//nuevo código en myapp/src/code/backend.cpp
updated("users updated");
// myapp/src/code/backend.h

#pragma once

#include <QObject>
#include <QDebug>
#include <QVariantList>

class Backend : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QVariantList users READ users WRITE setUsers NOTIFY usersChanged)

public:
    explicit Backend(QObject *parent = nullptr);

public:
    QVariantList users() const;
    void setUsers(const QVariantList &users);
    Q_SIGNAL void usersChanged();

private:
    QVariantList m_users;

private slots:
    void on_UsersChanged();

signals:
    void updated(QString data);
};

2. Añada en main.qml:

De un componente QML a otro componente QML.

Añada a main.qml:

De un objeto C++ a otro objeto C++. Ejemplo con un hilo asíncrono.

En este ejemplo se añade un hilo asíncrono que permita ejecutar una tarea sin congelar la interfaz de la aplicación. Para este caso se ejecuta simplemente una espera de 5 segundos. Una vez finalice el hilo asíncrono, una señal es enviada del objeto "asyncThread" y recibida en el objeto "backend" por el correspondiente slot.

1. Siga los pasos de 1 a 5 indicados en:

Conectar funcionalidad C++ con la interfaz QML

2. Añade el archivo myapp/src/code/async.h

3. Añade el archivo myapp/src/code/async.cpp

3. Añade a myapp/src/code/backend.h:

4. Añade a myapp/src/code/backend.cpp:

5. Añade en myapp/src/CMakeLists.txt:

Resultado

Compile y ejecute Debug en KDevelop. La salida de Debug en el panel inferior informará tras 5 segundos:

De código C++ a código QML. Ejemplo con un hilo asíncrono.

En este ejemplo se inicia un hilo asíncrono desde la interfaz QML de la aplicación, se envía una señal finalizado el hilo tras 5 segundos, siendo recibida en la interfaz QML.

1. Siga los pasos de 1 a 5 indicados en:

Conectar funcionalidad C++ con la interfaz QML

2. Añade el archivo myapp/src/code/async.h:

3. Añade el archivo myapp/src/code/async.cpp:

4. Añade a main.cpp:

5. Añade en myapp/src/CMakeLists.txt:

6. Añade a main.qml:

Ejecute la aplicación y pulse el botón Iniciar. Tras 5 segundos:

Last updated