|
1 month ago | |
---|---|---|
.. | ||
README.md | 1 month ago |
README.md
Communication C++ / QML"
L'objectif de ce TP est d'apprendre à faire interagir C++ et QML.
Vous utiliserez QtCreator. Vous pouvez utilisez si vous le souhaitez les QtQuick.Controls.
.
Une classe NetworkInterface
Écrivez une classe C++ NetworkInterface
(Abrégé par la suite en NI). Cette
classe représente une interface réseau de votre machine et va interagir avec QML (notamment être affichée).
Elle s'appuiera (sans en hériter, c'est une façade) sur la classe QNetworkInterface
de Qt. Cette
dernière est un peu compliquée pour notre besoin et n'a rien de prévu pour être
accédée depuis QML. Nous complèterons son contenu au cours du TP.
Premier jet
La classe NI a un attribut, de type QNetworkInterface
, passé en paramètre à
la construction. Pour tester, je vous invite à regarder la méthode
QNetworkInterface::interfaceFromName
et vous rappelle que vous avez toujours
au moins une interface réseau (lo
), et sans doute un eth0
ou un wlan0
(les noms peuvent varier).
Ajoutez une méthode publique name
permettant d'avoir le nom de l'interface.
Un peu de QML
Créez un NI dans votre main
. Rendez cette instance visible dans QML.
Affichez le nom de votre interface dans la page QML.
Compléter NI
Ajoutez des méthodes physicalAddress
et address
à votre classe NI. Ces
méthodes renvoient des QString
.
Affichez les résultats dans QML.
Appel d'une méthode CPP depuis QML
Ajoutez une méthode shutdown
à NI. Cette méthode ne fait qu'afficher en
texte un message (vous n'avez pas les droits sur les machines pour
tomber les interfaces réseau).
Ajoutez au QML un bouton ou un rectangle clickable qui appelle le shutdown
de votre
NI.
Un attribut propre
Ajoutez une propriété myName
à l'interface. Cette propriété s'appuie sur un
attribut de type QString
nommé m_myName
.
myName
est initialisé à la construction avec le nom de l'interface (il pourra
par la suite être différent).
Affichez myName à la place de name dans le QML
Dépendance
Modifiez la méthode shutdown
pour qu'elle change le nom perso de l'interface.
Si nécessaire, ajoutez ce qu'il faut pour que l'affichage soit actualisé.
Saisie
Ajoutez un composant QML dans votre page pour permettre d'éditer le nom long (myName) de l'interface réseau. Le nom est changé quand vous validez votre saisie
Saisie en continu
Modifiez le composant QML précédent pour que le nom de l'interface soit changé à chaque modification du champs de saisie.
Utile pour la suite des TP
- Ajoutez l'affichage de certaines propriétés QML dans la console Javascript dés que votre fenêtre est affichée.
L'essentiel est bouclé, place au facultatif
Ajoutez les éléments suivants à votre interface:
- Une image de fond
- Un champ de saisie pour taper le nom (court) d'une nouvelle interface (remplace la précédente, on a pas vu les List/Model encore).
- La même chose avec une liste déroulante
- Une gestion correcte du redimentionnment
- Un ensemble de checkbox qui permette de masquer ou d'afficher les champs de l'interface.