PyQt/Gestion du focus
La gestion du focus clavier sous Qt est assez similaire aux autres environnements graphiques.
Elle s'effectue lors de différentes actions, listées ci-dessous avec une courte explication de leur
fonctionnement et comment les gérer en Qt. Il est possible, pour chaque widget, de définir à
quelles actions il doit réagir. Cela s'effectue par l'appel à la méthode codice_1, prenant en paramètre le type de focus pour lequel le widget doit réagir.
L'utilisateur se déplace d'un widget à l'autre avec les touches et +.
Il s'agit de l'action la plus courante, l'utilisateur désirant par exemple se déplacer d'un champ de
saisie à l'autre dans un formulaire. Le principe de ces combinaisons de touches est de se déplacer
circulairement entre les widgets, il y a donc une relation d'ordre. Bien évidemment, en tant que développeur vous pouvez choisir quels widgets répondent à ces actions ainsi que l'ordre de
déplacement.
Pour que votre widget réponde à ce type de focus, définissez la politique de focus à codice_2. De plus, l'ordre est modifiable par la méthode statique codice_3.
L'utilisateur clique sur un widget.
Le clic pour obtenir le focus est une autre action très courante pour l'utilisateur, il est donc important que votre application le supporte. Cependant il faut bien paramétrer cela faute d'avoir
un comportement étrange. Prenons l'exemple d'un éditeur de texte comportant un bouton permettant
de mettre un texte en gras. Il faut donc que le bouton réponde au clic, mais pas au focus,
faute de quoi le focus reste sur le bouton et l'utilisateur de votre application est quelque peu
dérouté. Par conséquent, la recommandation de la documentation de référence est de désactiver
le focus par un clic sur les widgets tels que les boutons.
L'activation de ce focus s'effectue par la politique codice_4.
Remarque Il est possible d'activer le focus avec un clic et le focus avec les touches Tab et Shift
+ Tab en définissant la politique de focus à codice_5.
L'utilisateur utilise un raccourci clavier.
Il est aussi fréquent que le focus se déplace lors de l'utilisation d'un raccourci clavier, si par
exemple une fenêtre de dialogue s'ouvre. La documentation de référence suggère donc fortement
de gérer le focus lors de raccourcis claviers aussi.
L'utilisateur utilise la roulette de défilement de sa souris.
Cette méthode est moins commune, surtout vu son fonctionnement différent entre les diverses
plateformes supportées. Sous Microsoft Windows c'est le widget ayant le focus clavier qui reçoit
les événements de la souris, tandis que sous X11 et Mac OS X c'est le widget gérant tous les
événements de la souris qui reçoit ces informations.
Qt gère le focus de la roulette en permettant au focus du clavier de se déplacer lorsque l'utilisateur
utilise la roulette de défilement de sa souris. En mettant une politique correcte sur les
widgets, le fonctionnement de l'application sur les plateformes supportées sera identique. Pour
activer ce focus, il faut lui mettre QWidget.WheelFocus, qui active par la même occasion le focus
défini par QWidget.StrongFocus.
L'utilisateur active la fenêtre de l'application.
Une autre question à se poser lors du développement d'une application est de savoir quel widget
va recevoir le focus lors de l'ouverture de l'application, mais aussi lorsque l'utilisateur met la
fenêtre en avant-plan. Cependant, cette partie est assez simple à mettre en place. Si l'utilisateur
met la fenêtre en avant-plan, le dernier élément à avoir le focus avant la mise en arrière-plan récupère le focus, car Qt gère cela automatiquement.
Pour définir quel widget doit obtenir le focus lors de l'ouverture de la fenêtre, il suffit d'utiliser
la méthode setFocus() avec comme paramètre le widget voulu. Celui ci aura automatiquement le
focus lors de l'appel à show().
Aucun focus pour le widget.
Il est aussi possible de définir un widget de telle sorte à ce qu'il ne puisse pas obtenir le focus.
Cela est obtenu avec la politique de gestion de focus QWidget.NoFocus.
Pour plus de détails quant à la gestion de focus nous vous invitons à consulter le guide de la
documentation de référence à l'adresse http://doc.trolltech.com/3.3/focus.html.

PyQt/Quelques widgets
Ce chapitre nous permet d'introduire quelques widgets que nous considérons comme important de connaître.
L'ensemble des classes disponibles dans Qt peut être divisé en trois grands groupes : 
Nous allons commencer cette documentation par trois widgets relativement important, QApplication, QDialog et QMainWindow. Ces widgets représentent respectivement une application Qt complète, une boîte de dialogue et une fenêtre principale. Dans la plupart des guides existants on ne vous parle pas de ces widgets malgré leur importance dans la conception d'une application Qt. C'est pourquoi nous avons décidé de les documenter ici avec des widgets plus graphiques.