l'utilisateur a appuyé sur une touche, sur un bouton, des données sont disponibles
depuis le réseau, etc. Il se transmet dans l'architecture interne de PyQt et finit par
déclencher, côté Qt Quick, l'appel d'une fonction particulière : le gestionnaire de
signal (en anglais, signal handler). Le programmeur peut associer ce bout de code
directement à un signal donné.
Note > En réalité, ce système est bien plus général que celui des liaisons de
propriétés : ce dernier réévalue des expressions lors de l'émission de signaux qui
indiquent le changement de valeur d'une variable, alors que les gestionnaires de
signal sont nettement plus flexibles, permettant d'effectuer n'importe quelle action
lors de l'émission d'un signal (notamment définir la valeur d'une propriété). En
réalité, il serait possible de se passer complètement du système de liaison de
propriétés, mais le code deviendrait bien plus difficile à écrire.
De manière générale, un gestionnaire de signal est défini lors de l'émission d'un signal :
si le signal est nommé signal, alors le gestionnaire de signal correspondant sera
onSignal (remarquer la différence de capitale). Lors d'un changement de valeur d'une
propriété, le signal propertyChanged est émis : le gestionnaire de signal sera alors
onPropertyChanged. Peu importe la propriété, ce signal sera toujours émis
automatiquement, sans besoin de configuration. Cette utilisation de base a déjà été
décrite à la Section 3.4, Réactions au clic sur un bouton.
Dans la documentation de Qt Quick, les composants QML sont toujours accompagnés
de leurs signaux, comme MouseArea, un composant qui sert à recevoir les événements
en provenance de la souris. Certains possèdent également des paramètres, à l'instar de
fonctions, comme clicked(MouseEvent mouse) : ils indiquent que le signal
transporte une certaine information, qui sera disponible au niveau du gestionnaire de
signal. Ici, le signal clicked offrira au code connecté une variable mouse, dont le type
est MouseEvent : à travers cet objet, le code pourra déterminer, par exemple, l'endroit
exact où le clic a eu lieu.
Note > Cet exemple est disponible dans le dossier mousearea .
import QtQuick 2.5
import QtQuick.Controls 1.4
ApplicationWindow {
visible: true
width: 640
height: 240
title: qsTr("Hello World")
Rectangle {
285
depuis le réseau, etc. Il se transmet dans l'architecture interne de PyQt et finit par
déclencher, côté Qt Quick, l'appel d'une fonction particulière : le gestionnaire de
signal (en anglais, signal handler). Le programmeur peut associer ce bout de code
directement à un signal donné.
Note > En réalité, ce système est bien plus général que celui des liaisons de
propriétés : ce dernier réévalue des expressions lors de l'émission de signaux qui
indiquent le changement de valeur d'une variable, alors que les gestionnaires de
signal sont nettement plus flexibles, permettant d'effectuer n'importe quelle action
lors de l'émission d'un signal (notamment définir la valeur d'une propriété). En
réalité, il serait possible de se passer complètement du système de liaison de
propriétés, mais le code deviendrait bien plus difficile à écrire.
De manière générale, un gestionnaire de signal est défini lors de l'émission d'un signal :
si le signal est nommé signal, alors le gestionnaire de signal correspondant sera
onSignal (remarquer la différence de capitale). Lors d'un changement de valeur d'une
propriété, le signal propertyChanged est émis : le gestionnaire de signal sera alors
onPropertyChanged. Peu importe la propriété, ce signal sera toujours émis
automatiquement, sans besoin de configuration. Cette utilisation de base a déjà été
décrite à la Section 3.4, Réactions au clic sur un bouton.
Dans la documentation de Qt Quick, les composants QML sont toujours accompagnés
de leurs signaux, comme MouseArea, un composant qui sert à recevoir les événements
en provenance de la souris. Certains possèdent également des paramètres, à l'instar de
fonctions, comme clicked(MouseEvent mouse) : ils indiquent que le signal
transporte une certaine information, qui sera disponible au niveau du gestionnaire de
signal. Ici, le signal clicked offrira au code connecté une variable mouse, dont le type
est MouseEvent : à travers cet objet, le code pourra déterminer, par exemple, l'endroit
exact où le clic a eu lieu.
Note > Cet exemple est disponible dans le dossier mousearea .
import QtQuick 2.5
import QtQuick.Controls 1.4
ApplicationWindow {
visible: true
width: 640
height: 240
title: qsTr("Hello World")
Rectangle {
285
