You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Francois DELOBEL 9e540d0a2d
Manuel
1 month ago
..
README.md Manuel 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.