9. Panneau d'information
La nouvelle fonction de fragmentation permet de créer un grand nombre de carrés sur la
scène, mais on ne connaît pas exactement ce nombre. Dans cette section, nous allons
présenter comment on peut afficher un panneau d'information au-dessus de la vue (ce
qu'on appelle en anglais un overlay) ; ce panneau présentera trois informations
textuelles (voir Figure 12.7) :
le nombre de carrés actuellement sur la scène ;
la taille du carré sous le pointeur, en unités scène (nombre en virgule flottante) ;
la taille de ce même carré, en unités vue (nombre entier représentant des pixels).
Ces informations seront mises à jour en temps réel, selon les actions faites
(fragmentation, déplacement pointeur, zoom). Par ailleurs, pour laisser le choix à
l'utilisateur, ce panneau ne sera affiché qu'après avoir pressé la touche F1 et idem pour
le faire disparaître.
Cette nouvelle fonction est un peu plus compliquée à implémenter que ce qui précède,
mais on va décomposer la programmation en étapes. Comme souvent, il existe
plusieurs manières de procéder à ce développement. Ce qui est présenté ici tente de
préserver autant que possible l'indépendance entre les différentes classes ; ainsi, on
fera en sorte que seule la classe VueMosaiQ connaisse l'existence du panneau affiché ;
donc, ni CarreMosaiQ ni SceneMosaiQ n'auront à le notifier explicitement.
Commençons par créer une nouvelle classe, PanneauInfo, qui hérite de QFrame et dont
l'instance sera placée au-dessus de notre widget vue. Les informations seront affichées
sur ce panneau dans trois instances de QLabel, alignées verticalement.
…
class PanneauInfo(QFrame):
def __init__(self,parent,scene):
QFrame.__init__(self,parent)
self.vue = parent
self.scene = scene self.setFrameStyle(QFrame.Box)
self.setStyleSheet("QFrame {background-color: white;" \ + "color: darkblue}")
self.resize(180,75) self.labelNbCarres = QLabel(self) self.labelTailleCarreScene =
253
Précédent

- 254/494

Suivant