IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Besoin d'explication sur la liaison entre le code et l'interface

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Par défaut Besoin d'explication sur la liaison entre le code et l'interface
    Bonjour,

    J'ai toujours programmé le C++ en version texte, mais je me suis mis sous peu a Qt, du moins, j'ai tenté de me mettre a lire sur Qt.
    J'utilise Qt Creator 3.0.1 avec Qt 5.

    Je fais mon interface avec Qt Designer du Qt Creator, bon, j'ai mon fichier .ui

    mais rendu là, comment je n'ai pas trouvé parfaitement l'information sur comment lié mon .ui à mon cpp/h.

    Dans Qt Designer, j'ai créé mon Signal / Slot Editor, mais je ne le retrouve pas dans le code comme dans tout les exemples que j'ai pu trouvé sur le site de Qt 5.

    Rendu là, je ne sais pas si je suis sur la bonne voie. je crois que je dois utiliser un QObjet::connect?
    Dans les exemples que j'ai vu, ils utilisaient des methodes private slots.

    Donc voilà, je demande un peu votre aide si vous avez un livre ou un site internet qui explique bien la liaison entre un UI et l'application?

    Merci beaucoup.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 300
    Par défaut
    Pour commencer, as-tu compris le principe et le fonctionnement des signaux/slots ?

    Tu relies des signaux prédéfinis dans les objets à des slots via la fonction connect. Les slots sont des fonctions qui se déclenchent lors du signal.

    Exemple pour un objet qPushbutton, tu as un signal clicked() qui va réagir au clic et déclencher le slot lié.

    Sans un objet Qt, tu as les méthodes, les propriétés et en plus les signaux et les slots. Il te faut la macro Q_OBJECT qui pour le moc ( Meta Object Compiler ) qui est appelé par make pour générer du code de façon automatique pour la gestion des signaux. Tu appeles les signaux prédéfinis dans les objets Qt, mais tu peux aussi créer tes propres signaux dans tes objets avec emit.

    Liste de tutoriaux :

    http://qt.developpez.com/tutoriels/
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre actif

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Par défaut
    Bonjour,

    Premièrement, merci pour la réponse. Je connais le principe des signals/slot. Je suis capable de les utiliser si je programme directement mon interface en code sans utilisé les fichiers ui.
    J'ai oublié de spécifié que mon problème provient des menus principalement, ce qui est des boutons ou autres controls, je m'en sors bien.

    Sauf que au niveau des menus, mes connaissances ne me permettent pas de savoir quoi faire. J'imagine que c'est le même principe?
    Présentement, mon interface fonctionne assez bien, j'ai voulu ajouter la base de menu, c'est là que je bloque.
    Je vais m'attarder un peu plus au lien ci-haut voir si je ne trouve pas ce que je recherche, mais j'avais déjà été faire un tour et je n'avais rien trouvé.

    Merci encore.

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 300
    Par défaut
    Je n'utilise pas les fichiers .ui mais le principe est celui-ci.

    Dans ton designer, tu ajoutes des widgets exemple un QPushbutton. Imaginons que tu le nommes bouton_un.

    Pour appeler ses méthodes ou propriétés tu devra faire ui->bouton_un ... Bien-sur si tu ne mets pas de nom, designer en met un par défaut.

    ton fichier .ui est en fait un fichier xml décrivant ta gui ( tu peux le voir dans la zone éditer )

    Dans le designer, si tu crée un objet QMainWindow, tu va voir en haut à gauche cliquer ici, si tu cliques, tu accèdes à la création des menus. Dans la liste des objets du designer il n'y a pas d'icone menu

    Pour lier un fichier .ui à ton projet, il faut l'ajouter dans de .pro :
    exemple :
    Si tu crée un projet à partir de QtCreator, il le met tout seul.

    Au niveau code pour les menus, voici un exemple de petit menu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     QMenuBar* menubar=new QMenuBar(this);
     QMenu* menu_un=new QMenu("Menu 1");
     QMenu* menu_deux=new QMenu("Menu 1");
     menubar->addMenu(menu_un);
     menubar->addMenu(menu_deux);
     menu_un->addAction("fonction menu 1",this,SLOT(fonction_menu_un()));
    Pour plus d'infos, regardes au niveau de Qt assistant et les exemples, il y en a 1 dédié aux menus ( du moins dans Qt4 )

    En espérant t'avoir aidé.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Oui les menus suivent la même logique.

    Par exemple pour le menu suivant :
    Nom : Qt_menus.png
Affichages : 318
Taille : 27,5 Ko
    On a la hiérarchie suivante :
    Nom : Qt_menu_hierarchie.png
Affichages : 287
Taille : 8,1 Ko
    actionNew, actionOpen, actionQuit et actionUndo, actionRedo sont les QAction associés aux éléments terminaux des menus, qui vont envoyer le signal triggered() lorsque ces menus seront sélectionnés.

    Il suffira alors comme pour le reste d'associer à ce signal les slots de ton choix :

    Nom : Qt_signaux_slots.png
Affichages : 269
Taille : 13,4 Ko
    Dernière modification par Invité ; 11/04/2014 à 22h17.

  6. #6
    Membre actif

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Par défaut
    Un très grand merci à vous deux.

    Je vais regarder tout ça et faire quelques tests. Je croyais qu'il créerais la fonction du slot automatiquement comme il le fait par exemple pour les pushButton ou autres.

    Merci encore.

  7. #7
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 300
    Par défaut
    Je pense qu'il doit te créer la fonction slot vide tout seul.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. Besoin d'explications sur les charset
    Par EGPMS dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 03/02/2006, 15h38
  2. [xml] Xpath besoin d'explication sur preceding-sibling::
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 10/01/2006, 09h32
  3. besoin d'explication sur le c++
    Par poporiding dans le forum MFC
    Réponses: 13
    Dernier message: 17/12/2005, 18h01
  4. Besoin d'explications sur un bout de code
    Par zizitop dans le forum C
    Réponses: 7
    Dernier message: 26/04/2005, 14h51
  5. Besoin d'explications sur float et l'élasticité !
    Par KneXtasY dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 14/01/2005, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo