0% ont trouvé ce document utile (0 vote)
22 vues4 pages

QT QML CPP

Le document décrit comment associer un objet C++ à un document QML, permettant ainsi d'interagir entre les deux langages. Il explique la création d'une classe C++ avec des méthodes et propriétés accessibles depuis QML, ainsi que l'utilisation de signaux pour la communication. Enfin, il montre comment déclarer des propriétés et utiliser des signaux dans QML pour réagir aux changements d'état de l'objet C++.

Transféré par

Michel YARO
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
22 vues4 pages

QT QML CPP

Le document décrit comment associer un objet C++ à un document QML, permettant ainsi d'interagir entre les deux langages. Il explique la création d'une classe C++ avec des méthodes et propriétés accessibles depuis QML, ainsi que l'utilisation de signaux pour la communication. Enfin, il montre comment déclarer des propriétés et utiliser des signaux dans QML pour réagir aux changements d'état de l'objet C++.

Transféré par

Michel YARO
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 4

Association d’un objet C++ au document principal QML

#include <QGuiApplication> Accède à la déclaration de la


#include <QQmlApplicationEngine> classe C++
#include <QQmlContext>

#include "maclasse.h"
Ajoute un objet C++ au Instancie un objet C++
int main(int argc, char *argv[]) contexte QML
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;

[Link]()->setContextProperty("monObjet", new MaClasse());

[Link](QUrl(QStringLiteral("qrc:/[Link]")));

return [Link]();
}

Charge le document principal


QML dans l’application
Appel d’une méthode d’un objet C++ à partir de QML

maclasse.h [Link]
#ifndef MACLASSE_H Button {
#define MACLASSE_H id: btLire
text: "Lire"
#include <QObject> onClicked: {
#include <QString> if([Link]("a"))
{
class MaClasse : public QObject }
{ }
Q_OBJECT }
public:
explicit MaClasse(QObject *parent=nullptr);
virtual ~MaClasse();

Q_INVOKABLE bool lire(QString type, int nb=0); On peut appeler la méthode de


}; l’objet monObjet de type MaClasse
#endif // MACLASSE_H à partir de QML/JS.

Il est aussi possible d’appeler un


La méthode doit être déclarée avec slot.
Q_INVOKABLE dans une classe qui
hérite de QObject pour pouvoir
l’appeler à partir de QML
Déclarer une propriété C++ pour l’utiliser en QML

maclasse.h
#ifndef MACLASSE_H Une propriété est déclarée Q_PROPERTY()
#define MACLASSE_H dans une classe qui hérite de QObject.
#include <QObject>
#include <QString>
On peut exporter un attribut sous forme de
propriété Qt avec MEMBER. L'attribut sera
class MaClasse : public QObject accessible en lecture/écriture sans avoir
{ besoin d’accesseurs READ et WRITE.
Q_OBJECT
Q_PROPERTY(bool erreurConnexion MEMBER erreurConnexion NOTIFY erreurChanged)
Q_PROPERTY(QString moyenne READ getMoyenne NOTIFY moyenneUpdated)

public:
QString getMoyenne(); // accesseur

private: Il faut toujours spécifier un signal avec


bool erreurConnexion; NOTIFY pour autoriser la liaison de la
QString moyenne; propriété avec QML.
signals:
void erreurChanged(); On peut exporter un attribut sous forme
void moyenneUpdated(); de propriété Qt accessible seulement en
}; lecture avec l'accesseur READ sans
#endif // MACLASSE_H utiliser MEMBER.
Utiliser les signaux C++ et les propriétés dans QML

[Link]
void MaClasse::connecter() Émet un signal Qt
{
erreurConnexion = ..
emit erreurChanged();
}

void MaClasse::calculerMoyenne()
{
moyenne = ...;
emit moyenneUpdated();
}
L’élément Connections crée une
QString MaClasse::getMoyenne()
connexion aux signaux de Qt.
{ [Link]
return moyenne;
} Connections { L’objet Qt qui émet le signal
target: monObjet
onMoyenneUpdated: {
[Link]("Moyenne : " + [Link]);
}
onErreurChanged: {
Il est aussi possible ce créer un [Link]("Erreur : " + [Link]);
signal dans QML et de le connecter à }
un slot C++ (voir Cours QML). }

Les signaux Qt sont Accès à la propriété


préfixés par on : onSignal C++ d’un objet.

Vous aimerez peut-être aussi