Home
Apprendre C++ avec QtCreator : Utilisation de la classe CZones
Contents
1. Exemple d utilisation masque Elle peut galement tre utilis e pour masquer un seul de ces l ments il faut alors lui d signer cet l ment en lui en passant le code Exemple d utilisation masque CH CLOCHE La fonction clignote Cette fonction peut tre utilis e pour faire clignoter tous les l ments ajout s l interface Exemple d utilisation clignote Elle peut galement tre utilis e pour faire clignoter un seul de ces l ments il faut alors lui d signer cet l ment en lui en passant le code Exemple d utilisation clignote ICO CLOCHE Par d faut les objets clignotants changent de visibilit deux fois par seconde Il est possible de modifier ce rythme en appelant la fonction periodeClignotement laquelle il faut passer une dur e exprim e en millisecondes periodeClignotement 250 double la cadence La fonction joueSon Cette fonction peut tre utilis e pour obtenir la restitution audio du son d sign par le code qu on lui passe Exemple d utilisation J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 10 16 On peut galement lui sp cifier un nombre de r p titions successives Si ce nombre est 1 le son sera rejou ind finiment jusqu ex cution de stopSon Exemple d utilisation joueson SONNERIE 10 Les sons sont restitu s de fa on asynchrone le programme poursuit son ex cutio
2. Cet l ment peut par exemple d finir une ic ne affichable par l appareil une zone correspondant un bouton ou une zone dans laquelle l appareil peut afficher une valeur num rique affichage 7 segments typique des crans ACL La classe CZones r alise une superposition de ces images exactement comme on pouvait au si cle dernier superposer physiquement des transparents en ac tate pour r aliser un montage l aide d un r tro projecteur La classe CZones va donc offrir quatre types de fonctionnalit s des fonctions permettant de construire l interface essentiellement par ajout d images des fonctions permettant de contr ler l aspect de cette interface afficher masquer les images disponibles un syst me de gestion des v nements qui permet notamment que certaines des fonctions que vous allez d finir dans votre classe de dialogue soient automatiquement appel es lorsque surviennent certains v nements un clic par exemple des fonctions permettant d exploiter la chronique automatique insertion de commentaires sauvegarde etc La limite principale de la classe CZones est qu elle ne peut videmment pas assurer une mod lisation de l tat de l appareil maquett puisque cet tat est intimement li la nature de l appareil en question L essentiel du travail de programmation qui vous incombe sera donc li cette mod lisation 3 Techniques recommand es De par sa nature la classe C
3. QApplication a argc argv CReveil w CReveil w reveil png Trophy 01 w show return a exec return a exec 4 Modifier votre classe de dialogue pour qu elle devienne une instance de CZones plut t qu un simple QDialog fichier Avant Apr s include lt QtGui QDialog gt include zones h class CReveil public QDialog class CReveil public CZones h Q OBJECT Q OBJECT public public CReveil QWidget parent 0 CReveil OString image QString titre CReveil CReveil include reveil h include reveil h CReveil CReveil QWidget parent CReveil CReveil O String i QString t QDialog parent d eme Ope cpp CReveil CReveil CReveil CReveil J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 6 16 5 Construction de l interface Les op rations de construction de l interface sont des op rations qui prennent naturellement place dans le constructeur de votre classe de dialogue elles doivent tre effectu es une seule fois et pratiquement rien n est possible tant qu elles n ont pas t effectu es Les fonctions de la classe CZones qui permettent la mise en place des l ments de l interface utilisateur du programme exigent en g n ral qu on leur passe une cha ne de caract res d signant une image Si l image en question est une ressource interne cette cha ne sera quelque chose comme images
4. rentes L num ration peut tre aussi longue que n cessaire et il est souvent pratique de la placer dans un fichier identifiants h qui fera l objet d une directive d inclusion dans chacun des fichiers cpp contenant des instructions qui d signent les l ments d interface par leur code Le recours un fichier h d di aux identifiants est quasiment obligatoire dans les projets impliquant plusieurs fen tres bas es sur la classe CZones 4 Cr ation d un projet bas sur des CZones Pour utiliser cette classe il faut cr er un projet interface graphique bas sur un dialogue pour lequel l utilisation de QtDesigner sera remplac e par celle d une instance de la classe CZones Renoncer QtDesigner E vo MEN EM LCR avpiication graphique Qt en Lamtemet re Il suffit pour cela de d cocher la case G n rer l interface graphique dans le troisi me cran de la s quence de cr ation du projet cf ci Ee Versions de Qt D finit les informations de base des classes pour lesquelles vous contre e D tails souhaitez g n rer des fichiers squelettes de code source R sum Information sur la classe Nom de la classe CReveil Donnez la classe le nom de l appareil que vous allez maquetter Dans la suite de ce document on suppose g n ralement qu il s agit d un r veil matin Classe parent QDialog p Fichier d en t te reveil h Fichier source reveil cpp G n
5. 2 16 La classe CZones tant en d veloppement ces fichiers sont susceptibles d tre mis jour assez fr quemment Veillez bien utiliser la derni re version disponible J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 3 16 1 Objectif La classe CZones est destin e fournir une fen tre de base des programmes dont l interface simule le fonctionnement d un appareil Boutons cran cristaux liquides affichant des ic nes Les dialogues dessin s avec QtDesigner ne permettent que difficilement de maquetter le type d appareil qui nous int ressent d une part parce que l aspect des widgets boutons en particulier est trop standardis et d autre part parce que les actions utilisateur prises en comptent ne conviennent pas exactement notamment du fait de la non gestion des pressions prolong es La raison d tre de la classe CZones est donc de prendre en charge la gestion de l affichage des ic nes la d tection des actions de l utilisateur et la tenue d une chronique retra ant la succession de ces actions 2 Principe g n ral La classe CZones utilise une s rie d images de tailles identiques qu il vous faudra fournir sous la forme de fichier png L une de ces images repr sente l appareil lui m me et sert de fond d cran la fen tre principale du programme Les autres images ne comportent en g n ral qu un l ment figurant sur un fond transparent
6. Jowt em tree EL Assistant de cr ation de classe C Entrer le nom de la classe B gt D tails R sum Le nom du fichier source et du fichier d en t te seront d riv s du nom de la dasse Nom de la dasse secondaire Classe parent CZones b Information de type Aucune z Fichier d en t te secondaire h Fichier source Secondaire Cp Chemin Programmes La classe CZones TrophyQuartz Parcourir Configurer re Il reste n anmoins n cessaire de rajouter manuellement au constructeur les deux param tres de type QString qui sp cifieront lors de l instanciation l image servant de fond d cran et le nom de la fen tre Cette instanciation peut tre r alis e dans la fonction main int main int argc char argv QApplication a argc argv principale w p fondMere TrophyQuartz secondaire x png fondFille WM x show return a exec Co A Eh Lan OR Ga A E Le r le des fen tres est d fini par l ordre d instanciation la premi re variable cr e sera la fen tre principale les suivantes seront des fen tres secondaires J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 15 16 Wo Co A4 LU S D Fa Kn Fe Een Fe Fe a D ra Par comparaison avec la fen tre principale les fen tres secondaires pr sentent plusieurs particularit s notables Elles ne sont pas visibles par d faut ie elles
7. cr er une fonction secondaire clicSur car en son absence tous les clics seront automatiquement signal s la fen tre de base Remarquez bien que d s l instant o la fonction secondaire clicSur existe cette transmission automatique dispara t et que seuls les appels explicites CZones clicSur permettent alors ce type de communication La fonction pressionSur d une fen tre secondaire peut tre g r e exactement comme la fonction clicSur J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 16 16 10 Les commandes hors simulation Il peut s av rer utile d ajouter au programme des commandes qui ne sont pas celles de l appareil maquett mais qui concernent l utilisation de la maquette elle m me Un exemple simple serait une commande qui enregistrerait le contenu du journal et effacerait celui ci ce qui permettrait de faire passer un nouveau sujet sans avoir quitter et relancer le programme Pour que ces commandes n interf rent pas avec celles de l appareil la classe CZones propose de les regrouper dans un menu local qui appara t lorsqu on clique avec le bouton droit La fonction ajouteCommande Cette fonction dispose de deux param tres qui permettent de lui communiquer le code d identification attribu la commande et le texte qui apparaitra dans le menu Exemple d utilisation ajouteCommande COM CHRONIQUE Chronique visible Les commandes so
8. ne deviennent visibles qu au prix d un appel show cf 6 Elles ne disposent pas de leur propre journal mais utilisent celui de la fen tre principale ie si l une de leurs fonctions membre appelle remarque le texte est ins r dans le seul journal qui existe celui de la fen tre principale Leur case de fermeture est d sactiv e par d faut et elles ne se referment que lorsque la fen tre principale est ferm e fin du programme Il reste videmment possible de les masquer l aide de la fonction hide Elles peuvent signaler la fen tre de base les v nements qui la concernent sans qu il soit n cessaire de mettre en place un syst me signaux slots void secondaire clicSur const int CODE switch CODE case BOU HR remarque g r dans secondaire break case BOU 12H masque CUR 24H affiche CUR 12H ezone s gel tere EIDEL 3 break default CZones clicSur CODE Ce fragment de code illustre trois gestions diff rentes du clic sur un bouton de la fen tre secondaire Le bouton GOU HR ne concerne que la fen tre secondaire qui le g re donc exactement comme si elle tait une fen tre principale Le bouton BOU 12H exige un traitement de la part de la fen tre secondaire ici le d placement d un curseur dont les diff rentes positions possibles sont repr sent es par des ic nes Le d placement de ce curseur doit cependant aussi tre pris e
9. Apprendre C avec QtCreator Utilisation de la classe CZones Centre Informatique pour les Lettres et les Sciences Humaines EE ee te in ce ti inde een a a Ee Ee 3 2 A Med E 3 3 TFechiques r command es 5mrte imite insu reereete tte ege eege ees den deet telen ege 3 Utilisation de ressources internes eee 3 Utilisation de constantes symboliques seen 3 4 Cr ation d un projet bas sur des CZones ses 4 Renoncera RE 4 AUOPIEE CZONES ee a Mo eee est De le en dde ln lente rie lee le de rie ete ie tre ren 5 5 2 Construction d l interface rissen lin nantes dense a aean bien iega sene eaae rad E tee dirt EE EEA tee 6 La fonction ajouteBouton ss ssssssssssssesseesseeseeseneseneeeseneneeeeeeeeeeeeeeeeeeenee 6 IERT Ee EE 6 La fonction ajoutelmageCalculee sise L eet Ee E e RA tested a r iea E AER SROP Erai EESE aeS n EEEE a R ere Ea aSa 7 La fonction ajg teEcran ui zgegeg ZetegdesdegbeASEerdeEgedE Ed EERSTEN eebe EEE S Ta aae E pr Er ENa geed eR Eiris 7 L fonction aJouteCTAVISE E 8 La fonction Oth rnb dns eege Steng reiso ioiei E mines ESE Oe EEE EREE EEEE a r EES a S EEEO 8 6 Contr le de l aspect de l appareil ss 9 La fonction AFHCNE 15252155 surneles ssecs sens erate ner enes ve ten en tete ne EENS EENS n aan Riain 9 La TONCHONMASQUE aea E ege geegent e Seeerei EES 9 La fonction CH note 4m dre rrise sns EAE A E
10. EE A EERE te eege eeh 9 La fonction JOUE SON neo en aeria ies EE ESEE E EAE AE AE SEENEN Ee 9 La fonction stopSonO ees Rien ele Eeer EEEE SENEESE EERE 10 La fonction led EE 10 KLaieonetettectantt gege enr ENEE nt en sens EAE ele detre rate EENE EE OE EER 10 La fonctiomactiveCla vict eree eE EE ENEE NEEE EE ANE ESAE EEEE E EENE ENE REE a a r ed el 10 La fonction cal ulelmage erna E EE N E ne 10 TaGestion des Evenements deeg Ee Eege A EAE EE E EENE EE aa s 11 La fonction ebe gtt ee ere egen 11 La fonction ee A EE 12 8 Exploitation de la chromique sssss sims teint item mit SEENEN tin ddr li EET ERa 13 La fonction remarque hisiisinin ane a E dir insert SE min init tante ESEE RN 13 La fonction nomBouton iniiusssss siemens annee tirent nier EE EE ste ter EE 13 La fonction afficheChromque ssiss eines a R i e a ET EE R E S 13 La fonction Bettel UE BEE 13 9 Projets EE 14 Fen tres secondaires de type QDialog i siennes EEN edd ENNER EE N E E E ER E eue 14 Fen tres secondaires de type CZo ES sssscscninen rooi Ea EAE A E EE L EEE Ea EEA Iau ENA 14 10 Les commandes hors simulation sssrinin ein EEEE E E e E E RE Ea E A R REES 16 Ee dese Eet BEE 16 La fonction aJouteS parateur is since itereter EESdNEEEN EENS EES 16 La fonction commande EE 16 Pour t l charger la derni re version des fichiers source et de ce manuel http www jlpys fr SB_600 CZones Document du 03 11 2011 QtCreator 2 0 1 Qt 4 7 0 La classe CZones
11. Zones encourage l utilisation de nombreuses images ce qui pose deux probl mes ces images doivent rester disponibles pour que le programme puisse s ex cuter correctement l criture du programme exige la mise en place d un syst me efficace de d signation des l ments de l interface utilisateur d finis par ces images Utilisation de ressources internes Les images sont au d part contenues dans des fichiers issus d un appareil photo ou d un scanner ou cr s par simple copier coller partir de la version lectronique du mode d emploi de l appareil maquett Il est possible de faire en sorte que lors de son lancement le programme ouvre ces diff rents fichiers pour aller y r cup rer les images qu il devra afficher Cette approche comporte cependant un inconv nient important la copie du programme d un ordinateur l autre exige de respecter des r gles strictes dont un utilisateur final n est pas forc ment conscient faute de quoi le programme risque le moment venu de ne pas retrouver les fichiers dont il a besoin L exp rience sugg re que pour ce type de projets il est g n ralement pr f rable d importer les images dans un fichier ressource Lorsque QtCreator g n re le fichier ex cutable correspondant votre programme il y int gre alors directement les images Le risque que le code ex cutable ne retrouve pas ces images se trouve donc radicalement limin Utilisation de constantes symb
12. e caract res qui a t pass e ajouteBouton lors de la mise en place du bouton associ au code sur lequel elle est interrog e Exemple d utilisation QString texte nomBouton BOU OK La fonction afficheChronique La fen tre pr sentant le texte de la chronique est masqu e par d faut Elle peut tre rendu visible en appelant la fonction afficheChronique ou l aide de la combinaison de touches Ctrl L Pour masquer la fen tre de la chronique utilisez sa case de fermeture ou appuyez nouveau sur Ctrl L La fonction sauveChronique Cette fonction permet d enregistrer dans un fichier texte le contenu de la chronique Si on ne lui passe rien elle utilise un dialogue secondaire pour demander l utilisateur d indiquer o et sous quel nom de fichier les informations doivent tre enregistr es Si on lui passe une cha ne de caract res elle essaie de l utiliser comme chemin nom de fichier J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 14 16 9 Projets multi fen tr s Certains projets gagnent utiliser plusieurs fen tres soit parce que l appareil maquett dispose d l ments d interface situ s sur plusieurs de ses c t s face avant et face arri re par exemple soit parce que plusieurs appareils sont concern s l accordeur par exemple ne prend tous son sens que si une simulation d instrument de musique permet de le tester Dans tous
13. e en place la classe CZones fournit un certain nombre de fonctions qui permettent au programme de modifier l apparence de l image de l appareil qui est pr sent e l cran Ces fonctions tant membre de CZones elles sont accessibles aux fonctions membre de votre classe de dialogue qui est une CZones Si le projet comporte d autres classes une classe CEtat permettant de repr senter l tat de l appareil peut tre les fonctions de ces autres classes n auront videmment pas la possibilit d utiliser les fonctions d crites ici Ceci est une excellente chose contr ler l aspect visuel de l appareil est le r le de la classe de dialogue et d elle seule La fonction affiche Cette fonction re oit une valeur enti re le code correspondant l l ment d interface qu elle doit rendre visible Exemple d utilisation affiche ICO CLOCHE Si l l ment concern est un LCD la fonction affiche accepte un second argument indiquant la valeur que le LCD en question doit afficher Exemple d utilisation affiche LCD MINUTES 59 Si l l ment concern est un cran la fonction affiche accepte comme second argument une chaine de caract res dont le contenu sera ajout la fin du texte affich par l cran Exemple d utilisation affiche ECRAN coucou La fonction masque Cette fonction peut tre utilis e pour rendre invisibles tous les l ments ajout s l interface
14. e modifier cette caract ristique J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 8 16 La fonction ajouteClavier Cette fonction permet d utiliser une seule image pour d finir plusieurs boutons la fois Par convention l image se compose d un fond au moins partiellement transparent pixels dont la valeur alpha est inf rieure 255 sur lequel figurent des zones totalement opaques pixels contigus dont la valeur alpha est 255 La fonction ajouteClavier analyse l image dans le sens de la lecture ie en partant du coin sup rieur gauche et en explorant ligne par ligne D s qu elle rencontre un pixel opaque elle rep re tous les pixels opaques adjacents et consid re qu ils d finissent la zone occup e par un bouton Ces pixels sont ignor s lors de la recherche des boutons suivants La fonction ajouteClavier exige qu on lui passe trois param tres un code une cha ne de caract res d signant l image utiliser et une QStringList contenant les noms associer aux diff rents boutons Exemple d utilisation enum CLAVIER UN BOU Zz BOU ALARME BOU PLUS BOU MOINS BOU CAL BOU QUESTION 1 QStringList lesNoms lesNoms lt lt Zz lt lt alarme lt lt plus lt lt moins lt lt calendrier lt lt question 3 ajouteClavier CLAVIER UN PESEM lesNoms Les boutons ainsi d finis se verront attribuer des codes croissants et des noms puis
15. er le rep re utilis par le OPainter 10 13 Si l aiguille doit afficher autre chose que l heure il faut bien entendu effectuer les calculs n cessaires pour d terminer l ampleur de la rotation qui doit tre exprim e en degr s Dans le cas d un quadrant qui n occupe pas un disque complet vu m tre par exemple il faudra videmment modifier aussi le calcul de la position de l axe 4 Les images contenues dans les fichiers mentionn s aux lignes et 5 sont dessin es dans la zone attribu e l image calcul e A la diff rence des images utilis es lors de la mise en place de l interface elles n ont donc pas forc ment la m me taille ni m me les m mes proportions hauteur largeur que l image servant de fond Elles doivent cependant habituellement pr senter les m mes proportions hauteur largeur que la zone attribu e l image calcul e faute de quoi leur dessin dans cette zone se traduira par un tirement ou un crasement 7 Gestion des v nements Si la mise en place de l interface et le contr le de l aspect de la repr sentation visuelle de l appareil reposent essentiellement sur l appel de fonctions d finies dans la classe CZones la gestion des v nements s appuie sur une logique inverse il s agit d ajouter votre classe de dialogue des fonctions qui seront appel es sans que vous ayez faire quoi que ce soit pour cela lorsque les v nements qui vous int ressent surviendront Votre t che co
16. fondEcran par exemple Dans le cas contraire utilisation directe de fichiers cette cha ne devra tre un chemin d acc s au fichier quelque chose comme c projet image png par exemple Si vous n utilisez pas une ressource interne il vous appartient de d terminer le chemin absolu ou relatif ad quat et de faire en sorte qu il continue d signer correctement le fichier concern lorsque le programme est d plac ou lorsque ses conditions d ex cution changent L ajout d un l ment l interface au moyen des fonctions pr sent es ci dessous ne rend pas l l ment en question visible et disponible imm diatement Cette visibilit disponibilit doit tre g r e explicitement en appelant les fonctions de contr le de l aspect de l appareil La fonction ajouteBouton Cette fonction attend normalement qu on lui passe trois param tres une valeur enti re et deux cha nes de caract res sera appel e et recevra cette valeur lorsque l utilisateur cliquera sur ce bouton La premi re cha ne de caract res est le nom qui sera utilis dans le journal pour d signer le bouton dans les messages le concernant La seconde cha ne d signe une image d finissant la zone qui doit tre consid r e comme occup e par le bouton Lorsque le pointeur de la souris passe dans la zone ainsi d finie l image est affich e en superposition sur l image de base Si vous ne souhaitez aucun effet visuel particulier ut
17. iliser simplement une image extraite de votre image de base la superposition sera invisible Une autre approche est de modifier l g rement l aspect du bouton l ger changement de teinte par exemple ce qui renforce le feed back donn l utilisateur sur le fait qu il rentre dans une zone cliquable Il est galement possible de passer ajouteBouton une troisi me cha ne qui d signe l image qui sera superpos e lorsque le pointeur de la souris passe dans la zone d finie par la premi re image Cette seconde image permet de donner un feed back qui concerne une zone diff rente de la zone cliquable ce qui est notamment utile pour simuler la pression simultan e sur deux boutons Exemples d utilisation 1 lajouteBouton BOU OK OK bou OK png 2 lajouteBouton BOU CAD M CTRL ALT DEL images bou CAD images feedBack CAD Dans ce dernier exemple l image bou CAD d signe une zone cliquable unique Lorsque le pointeur de la souris entre dans cette zone c est l image feedBack CAD qui est affich e ce qui permet de faire comprendre l utilisateur qu un clic cet endroit simulerait la pression sur trois touches la fois La fonction ajoutelcone Cette fonction re oit deux valeurs un entier et une cha ne de caract res L entier est un code qui servira ensuite d signer l ic ne pour en contr ler la visibilit affich e masqu e ou clignotante La cha ne de caract re d signe l i
18. la fonction modeLCD modeLCD PAS D T ZEROS_A GAUCHE serait annul par modeLCD ZEROS A GAUCHE Tous les LCD d un projet doivent adopter le m me comportement du point de vue des z ros gauche du premier chiffre significatif La fonction modeLCD ne re oit donc aucun code lui indiquant le LCD concern par le changement de mode La fonction ajouteEcran Cette fonction re oit deux valeurs un entier et une cha ne de caract res L entier est un code arbitraire qui servira ensuite d signer l cran pour en contr ler la visibilit affich masqu ou clignotant et modifier le texte qu il affiche La cha ne de caract re d signe une image d finissant la taille et la position de l cran Il s agir une fois encore d une image ayant la m me taille que celle qui sert de fond d cran Elle est typiquement compos e d un fond transparent sur lequel figure un simple rectangle qui indique o l cran devra tre affich Exemple d utilisation ajouteEcran ECRAN minutes png Les crans ainsi cr s sont simplement des OTextEdit tout fait identiques ceux mis en place l aide de QtDesigner dans un projet graphique classique Les possibilit s offertes et les limitations impos es sont donc les m mes Remarque les crans de la classe CZones sont par d faut en mode read only L utilisation de la fonction ecran cf chapitre suivant permet d
19. les cas la cr ation du projet doit suivre la proc dure d crite ci dessus car La fen tre principale de l application doit tre bas e sur la classe CZones Les fen tres secondaires peuvent pour leur part soit tre galement des CZones soit tre de simples QDialog dessin s ou non l aide de QtDesigner Fen tres secondaires de type QDialog La seule difficult concerne les communications entre fen tres Selon les circonstances on peut envisager d tablir ces communications soit l aide du m canisme signaux slots un signal mis par une fonction d un des dialogues pouvant tre connect un slot d une autre fen tre soit en faisant du dialogue secondaire une variable membre du dialogue principal ce qui permet aux fonctions de ce dernier d acc der aux membres publics du dialogue secondaire D une fa on g n rale lorsque les fen tres secondaires sont de simples QDialog le fait que la fen tre principale soit bas e sur la classe CZones n affecte en rien la probl matique des communications entre fen tres Fen tres secondaires de type CZones Dans le cas d une fen tre secondaire l utilisation de la classe CZones est en fait plus simple que dans le cas d une fen tre principale car lors cr ation d une classe QtCreator nous laisse sp cifier librement la classe de base alors que lors de la cr ation du projet la classe de base ne peut tre que QMainWindow ou QDialog SE ES
20. mage de l ic ne sa position d affichage Rappel toutes les images doivent avoir la m me taille celle de l image de l appareil qui sert de fond d cran L image d une ic ne ou d un bouton est typiquement compos e d un fond transparent et de quelques pixels noirs perdus au milieux Exemple d utilisation ajoutelcone ICO CLOCHE M images cloche Les ic nes ajout es l interface sont initialement invisibles Utilisez les fonctions affiche etmasque pour contr ler l aspect de l appareil J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 7 16 La fonction ajouteImageCalculee Lorsque le nombre d tats d un l ment de l interface est trop important pour qu il soit facile de fournir une ic ne et donc un fichier png pour chacun d entre eux il peut tre pr f rable de recourir une image calcul e Si par exemple l interface comporte une simulation d horloge analogique il n est gu re envisageable de fournir une image pour chacune des positions possibles des aiguilles On passe la fonction ajoutelmageCalculee exactement les m mes arguments qu la fonction ajoutelcone un code et la d signation d une image Exemple d utilisation ajoutelmageCalculee CAL HORLOGE images zoneHorloge L image confi e ajoutelmageCalculee ne sera pas affich e elle ne sert qu d finir une zone rectangulaire dans laquelle sera affich e l image pr
21. n compte par la fen tre principale qui va dans cet exemple passer d un affichage europ en ie sur 24 heures un affichage am ricain sur 12 heures o 13 h devient 1 h Bien qu elle n ait aucun moyen d acc der explicitement la fen tre principale la fonction secondaire clicSur peut transmettre celle ci une demande de prise en compte du clic sur le bouton il lui suffit 10 d appeler CZones clicSur en lui passant le code associ au bouton concern Il s agit normalement du code re u par secondaire clicSur mais il peut parfois s av rer int ressant que le clic sur un bouton de la fen tre secondaire soit quivalent au clic sur un autre bouton situ lui dans la fen tre principale il suffit alors de passer le code de cet autre bouton CZones clicSur Cette fa on de proc der suppose videment que la la fen tre principale dispose d une fonction clicSur prenant en charge non seulement les codes de ses propres boutons mais aussi ceux des boutons des fen tres secondaires qui la concernent Les autres boutons ne n cessitent aucun traitement de la part de la fen tre secondaire qui se contente de r percuter sur la fen tre principale les clics dont ils font l objet Du point de vue de la gestion de l interface tout se passe donc comme si ces boutons taient en fait dans la fen tre principale Si AUCUN des boutons de la fen tre secondaire ne doit avoir d effet sur celle ci il est inutile de
22. n sans attendre que la restitution soit termin e Plusieurs sons peuvent tre restitu s simultan ment mais c est rarement agr able entendre A La fonction stopSon Cette fonction arr te imm diatement la restitution audio du son dont on lui passe le code elle est sans effet si le son en question n est pas en cours de restitution audio Exemple d utilisation stopSon SONNERIE Si on ne lui passe aucun argument cette fonction arr te tous les sons en cours de restitution audio ce qui permet notamment d interrompre un son jou en boucle sans avoir d terminer de quel son il s agit Exemple d utilisation stopSon La fonction 1cd Cette fonction renvoie l adresse du OQLCDNumber correspondant au LCD dont on lui passe le code Cette information permet d utiliser toutes les fonctionnalit s de la classe OLCDNumber Exemple d utilisation lcd LCD TIME H gt setSegmentStyle OLCDNumber Outline La fonction ecran Cette fonction renvoie l adresse du QTextEdit correspondant l cran dont on lui passe le code Cette information permet d utiliser toutes les fonctionnalit s de la classe OTextEdit Exemple d utilisation ecran ECRAN gt setReadOnly false La fonction activeClavier Cette fonction re oit le code du clavier qui doit tre activ Elle est surtout utile aux programmes qui utilisent plusieurs claviers claviers virtuels s lectio
23. ne dur e d passant 2 secondes Lors de chaque appel elle re oit le code associ au bouton concern Typiquement le corps de cette fonction comporte un switch analogue celui utilis par clicSur La dur e seuil au del de laquelle une pression est consid r e comme un v nement pression prolong e peut tre modifi e en passant la dur e souhait e exprim e en millisecondes la fonction dureePressionLongue J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 13 16 8 Exploitation de la chronique La chronique est un texte une sorte de journal de bord dans lequel le programme enregistre la s quence des actions de l utilisateur et ventuellement les variations de l tat de l appareil D s l instant o des boutons ont t ajout s l interface par appel ajouteBouton ou ajouteClavier toute action clic ou pression longue sur l un de ces boutons cr e automatiquement une entr e dans la chronique La fonction remarque Si les clics et pressions longues sur les boutons sont automatiquement not s dans la chronique il est en g n ral int ressant d ajouter celle ci des notes indiquant dans quel tat l appareil se trouve La fonction remarque permet d ins rer ce genre d information remarque 10 secondes d inactivit passag n mode veille La fonction nomBouton Cette fonction renvoie simplement la premi re cha ne d
24. nnables volont mais en cas de clavier unique il est quand m me n cessaire d activer explicitement celui ci Exemple d utilisation activeClavier CLAVIER UN Si le programme dispose de plusieurs claviers un seul d entre eux peut tre actif un instant donn la simple activation de l un d sactive implicitement tous les autres L activation d un clavier provoque son affichage Si le fond d cran ne comporte aucune image de touche l interface affichera en permanence le clavier actif et lui seul La fonction calcule Tmage A la diff rence des pr c dentes cette fonction n est pas une fonction qu il s agit d appeler mais une fonction qu il s agit de d finir c est elle qui est responsable de l aspect visuel des imagesCalculees Elle sera automatiquement appel e lorsqu il sera n cessaire de redessiner la zone d cran attribu e une image calcul e et elle doit disposer de deux param tres le premier recevra le code associ la zone concern e le second est une r f rence qui sera associ e l image finalement dessin e l cran dans la zone en question Exemple de d finition 1 void Dialog calculelmage const int CODE QPixmap amp pix J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 11 16 Gu AUN if CODE CAL COULEUR pix fill m couleur La fonction fill utilis e la ligne 4 se borne remplir uniform ment la zone rec
25. nsiste donc d finir le corps de ces fonctions de fa on r aliser les cons quences que ces actions impliquent pour l appareil que vous simulez La fonction clicSur Cette fonction doit tre membre de votre classe de dialogue et doit tre d clar e comme ceci void clicSur const int CODE Elle sera appel e lorsque l utilisateur cliquera sur l un des boutons mis en place par appel ajouteBouton ou ajouteClavier Lors de chaque appel elle re oit le code associ au bouton concern Typiquement le corps de cette fonction comporte un switch qui lui permet de prendre les mesures appropri es la nature du bouton qui a t cliqu 2 L exception notable tant videmment le contr le de l aspect des imagesCalculees J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 12 16 2 3 4 5 6 7 8 9 10 Ba 12 13 void Dialog clicSur const int BOUTON switch BOUTON case BOU ON OFF PI maria break case BOU SIEGE EJECTABLE a ENE break default remarque clic sur un bouton non pris en charge La fonction pressionSur Cette fonction doit tre membre de votre classe de dialogue et doit tre d clar e comme ceci void pressionSur const int CODE Elle sera appel e lorsque l utilisateur maintiendra enfonc l un des boutons mis en place par appel ajouteBouton ou ajouteClavier pendant u
26. nt ajout es la fin du menu ce qui signifie qu elles figureront dans celui ci dans l ordre o elles y ont t ajout es La fonction ajouteSeparateur Cette fonction ajoute une ligne horizontale dans le menu ce qui permet de s parer visuellement des groupes de commandes Exemple d utilisation ajouteSeparateur La fonction commande Cette fonction doit tre membre de votre classe de dialogue et doit tre d clar e comme ceci void commande const int CODE Elle sera appel e lorsque lorsqu un des items du menu sera activ Lors de chaque appel elle re oit le code associ la commande concern e Typiquement le corps de cette fonction comporte un switch qui lui permet d effectuer les traitements correspondant aux diff rentes commandes J L P ris 03 11 11
27. oduite par la fonction calcule Image que votre programme devra d finir La fonction ajoutel CD Cette fonction re oit deux valeurs un entier et une cha ne de caract res L entier est un code arbitraire qui servira ensuite d signer le LCD pour en contr ler la visibilit affich masqu ou clignotant et changer la valeur qu il affiche La cha ne de caract re d signe une image d finissant la taille et la position du LCD Il s agir une fois encore d une image ayant la m me taille que celle qui sert de fond d cran Elle est typiquement compos e d un fond transparent sur lequel figure un simple rectangle qui indique o le LCD devra tre affich Exemple d utilisation ajouteLCD LCD MINUTES images minutes Les LCD ainsi cr s sont simplement des OLCDNumber tout fait identiques ceux mis en place l aide de QtDesigner dans un projet graphique classique Les possibilit s offertes et les limitations impos es sont donc les m mes Remarques Les LCD de la classe CZones adoptent par d faut un style de segment flat et un affichage sur deux chiffres L utilisation de la fonction ecran cf chapitre suivant permet de modifier ces caract ristiques Les LCD de la classe CZones affichent par d faut gauche du premier chiffre significatif autant de z ros qu il en faut pour occuper toutes les positions d affichage Ce comportement peut tre contr l l aide de
28. oliques Les fonctions de la classe CZones d signent les l ments de l interface utilisateur boutons ic nes en s appuyant sur un simple syst me de num rotation Comme il n est gu re r aliste d esp rer se souvenir de quel num ro est associ chacun de ces l ments l criture du programme est grandement facilit e par le recours des constantes dont le nom voque directement la nature de l l ment d interface auquel leur valeur correspond 1 Ce qu on appelle habituellement un cran ACL ou en franglais un LCD J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 4 16 En clair plut t que de devoir crire affiche 317 rend l ic ne de la cloche visible on pr f rera d finir une constante Ia const int ICO CLOCHE 317 qui permettra ensuite de limiter consid rablement les risques d erreur en crivant affiche ICO CLOCHE sans commentaires La cr ation d une maquette conduit souvent utiliser plusieurs dizaines de constantes de ce type dont les valeurs sont en fait sans importance il suffit qu elles soient toutes diff rentes Plut t que de d finir ces constantes une par une comme le sugg re l exemple ci dessus on peut pr f rer recourir une num ration enum BOU ON OFF BOU GAUCHE BOU DROIT ICO CLOCHE ICO SNOOZ1 Ia Toutes les tiquettes ins r es dans une m me enum correspondent automatiquement des valeurs diff
29. rer l interface graphique d Cas ae Oaa J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 5 16 Adopter CZones Cette adoption exige quatre interventions de votre part Il faut 1 Placer une copie des fichiers zones h et zones cpp dans le dossier du projet Cette fa on de rendre disponible la classe CZones vous donne acc s sa d finition et un examen du code correspondant peut ventuellement vous aider comprendre comment elle fonctionne Cet examen reste cependant purement optionnel et quoi qu il en soit L utilisation normale de la classe CZones se fait sans modifier les fichiers zones h et zones cpp Si votre programme utilise une classe CZones modifi e par vos soins vous devrez en assumer les cons quences notamment lors des mises jour de la version commune des fichiers 2 Ajouter ces deux fichiers au projet Commande Ajouter des fichiers existants du menu local obtenu avec un clic droit sur le nom du projet dans la zone de navigation entre fichiers 3 Modifier la fonction main de fa on ce que l instanciation de la classe de dialogue mentionne le nom du fichier qui contient l image qui va servir de base l interface utilisateur du programme et le nom du programme lui m me avant apr s int main int argc char argv int main int argc char argv QApplication a argc argv
30. s dans la liste fournie dans l ordre o ils seront d tect s Il convient d tre vigilant lors de la mise en place d un clavier de fa on ce que l ordre de d tection des boutons ne vienne pas perturber l association entre les boutons et les identifiants code et nom pr vus leur intention Un simple contr le des messages affich s dans la fen tre chronique met imm diatement en vidence toute interversion accidentelle qui peut tre corrig e soit en modifiant l image soit en changeant la d finition des constantes et l ordre des noms dans la liste La fonction ajouteSon Cette fonction re oit deux valeurs un entier et une cha ne de caract res L entier est un code arbitraire qui servira ensuite d signer le son pour en contr ler la reproduction mise en route arr t La cha ne de caract res d signe un fichier wav qui contient un enregistrement du son concern Exemple d utilisation ajouteEcran SONNERIE Msonnerie wav chemin relatif Le syst me de gestion des ressources de QtCreator ne permet actuellement pas d utiliser des ressources de type son Il faut donc obligatoirement recourir un fichier qui restera distinct de l ex cutable du programme mais devra tre disponible pour que celui ci puisse produire le son J L P ris 03 11 11 QtCreator 2 0 1 Qt 4 7 0 La classe CZones 9 16 6 Contr le de l aspect de l appareil Une fois l interface mis
31. tangulaire avec la couleur contenue dans la variable membre m couleur Il suffit donc de changer la valeur de cette variable pour obtenir un affichage diff rent sans avoir pour cela fournir un fichier png pour chacune des nuances utilis es Contrairement ce que cet exemple pourrait laisser croire l criture d une fonction calcule Image produisant des images non triviales n est pas forc ment une t che tr s simple pour un programmeur d butant Un des cas o le calcul d une image int ressante peut rester assez simple est celui o il est possible de se contenter de modifier une image contenue dans un fichier png L exemple suivant affiche les aiguilles d une horloge dans la position correspondant l heure courante void Clock calculelmage const int CODE QPixmap amp pix QPainter p amp pix QPoint axeRotation pix width 2 pix height 2 p translate axeRota setRenderHint QPainter Antialiasing QRect rect axeRota QTime instant QTime currentTime p O O G TO tO g save sauvega rotate 30 instant hour 0 5 instant minute drawPixmap rect restore annule la rotation pr c dente rotate instant F mi drawPixmap rect p tion tion pix size rde la position initiale du rep re QPixmap png courte nute 6 QPixmap png longue La rotation des aiguilles est obtenue en affichant leur image apr s avoir fait pivot
Download Pdf Manuals
Related Search
Related Contents
Digital Still Camera Le système graphique X Window Connecting with the community Gender and SSR Toolkit - User Guide Fiber Optic Bridge Keyword System 854 - Manuale Italiano SRP-275II Sony XS-GS80L Instruction Guide Samsung 721S Manual de utilizare Lindy USB Bluetooth Adaptor User's Manual Copyright © All rights reserved.
Failed to retrieve file