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

Qt Discussion :

Classe héritant de QAction


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut Classe héritant de QAction
    Bonjour, j'essaie de faire un menu QMenu, je veux lui ajouter a chaque action un objet de ma classe ActionMenu héritant de QACtion, dois-je redéfinir une methode de QACtion dans ActionMenu qui sera appelée en cas de sélection de l'item dans le menu ? si oui laquelle ?
    Merci d'avance.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Vous pouvez utiliser le système de signal/slot pour appelé une fonction lorsqu'un élément du menu est sélectionné.
    De mémoire, je n'ai jamais eu le besoin d'hérité de QAction, donc je suis un peu dubitatif sur la méthode que vous utilisez, mais soit.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Tu n'as pas besoin de créer une nouvelle classe pour cela. QAction fournit les fonctions data() et setData() pour attacher des données utilisateur dans une QAction (http://qt-project.org/doc/qt-5.0/qtw...n.html#setData)

  4. #4
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut
    Merci pour vos conseil je vais voir la doc.

  5. #5
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Vous pouvez utiliser le système de signal/slot pour appelé une fonction lorsqu'un élément du menu est sélectionné.
    De mémoire, je n'ai jamais eu le besoin d'hérité de QAction, donc je suis un peu dubitatif sur la méthode que vous utilisez, mais soit.
    Je ne comprends pas les slots, puis je mettre ma propre méthode, j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(menus[i].action, SIGNAL(triggered()), this, SLOT(act()));
    ça compile mais qtcreator me met une erreur dans la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object::connect: No such slot QMenuBar::act()
    Merci.

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    La connexion ne devrait pas se faire au niveau de la barre de menu, mais plutôt au niveau du formulaire qui expose le slot "act" (selon ton exemple).

    Ceci dit:
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Vous pouvez utiliser le système de signal/slot pour appelé une fonction lorsqu'un élément du menu est sélectionné.
    De mémoire, je n'ai jamais eu le besoin d'hérité de QAction, donc je suis un peu dubitatif sur la méthode que vous utilisez, mais soit.
    Hé bien, il m'est déjà arrivé de trouver qu'il était plus facile de dériver une action personnelle de QAction que de commencer à connecter une action de manière systématique à différents items.

    Ce sont, bien sur, des cas particuliers, mais, si tu as une action qui doit être partagée entre différents formulaires, bien qu'elle appelle toujours la même méthode (tout à fait globale), et que tu dois, en plus, décider de l'activer ou non (voire décider de l'afficher dans le menu ou non) ou encore l'avoir dans le menu et/ou dans le menu contextuel, de différents formulaires, cela peut apporter une certaine facilité, surtout si tu appliques "à la lettre" le principe du MVC

    Pour faire comprendre le principe (je l'ai dit: c'est un cas particulier, hein ):

    Mettons que tu manipules un grand nombre de données métier de types différents, tous plus ou moins mises en relation les uns avec les autres, dans une application "multi document".

    Pour chaque type de donnée (ou peu s'en faut), tu as créé différents types de vues (mettons, une "simple" vue tabulaire et une vue basée sur QGaphicsView et ses acolytes).

    Chaque type de donnée n'est modifiable que sous certaines conditions, mais tu peux agir aussi bien depuis la vue "graphique" que depuis la vue "tabulaire".

    Bien sur, les différentes actions que tu peux effectuer sur un type de donnée particulier présente leur propre texte et sont disponibles sous différentes formes (bouton, menu général, menu contextuel, pourquoi pas double clique, ...)

    La "meilleure solution" consiste à faire en sorte que les différentes vue d'un même type partagent un même modèle de sélection, de manière à ce que, si tu sélectionne un item particulier dans une vue particulière, la sélection soit automatiquement "reportée" vers toutes les vues actives que tu peux avoir de cet item, puis d'activer (ou non) et d'afficher (ou non) les actions en fonction du contexte particulier.

    De cette manière, chaque action appelle une fonction qui ne doit être codée qu'une fois, basée sur les items sélectionnés (au niveau du modèle de sélection propre au type de donnée particulier sur lequel tu travailles) et accessible (ou non) en fonction du contexte de la vue sur laquelle tu travailles.

    "Tout ce qu'il te reste à faire", c'est de veiller pour chaque vue à afficher (ou non) et à activer (ou non) les différentes actions que tu as envisagées

    Le fait de dériver de QAction te permet de placer le code de cette action qui ne doit être implémenter qu'une seule fois directement... au niveau de ta classe dérivée de QAction.

    Cela te permet, entre autres, d'éviter les "dépendances ascendantes" par lesquelles un sous sous sous formulaire en vient à dépendre explicitement du formulaire de base
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. class héritant de Form, impossible à utiliser ?
    Par Pol63 dans le forum VB.NET
    Réponses: 9
    Dernier message: 01/06/2007, 09h25
  2. Réponses: 5
    Dernier message: 03/12/2006, 15h55
  3. Afficher une image dans une classe héritant de Jframe
    Par condor_01 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 27/04/2006, 22h11
  4. Pb: Classe héritant de TForm
    Par XeN-Lo dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/04/2006, 15h30
  5. [CSS] Classe héritant déf d une autre classe?!
    Par Trunks dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/01/2006, 23h43

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