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 :

Afficher un QAction dans un trayIconMenu selon un bool.


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut Afficher un QAction dans un trayIconMenu selon un bool.
    Bonjour,

    je suis entrain de voir pour faire une amélioration qui me permet d'afficher un lien dans mon que si connexion_site = true. Qui lui est un bool.

    Donc si l'utilisateur est connecté au site alors je mets connexion_site = true.

    Donc ce qui me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Tool::Tool()
    {
    	// Creation du menu icone
    	trayIconMenu = new QMenu;
     
    	// Creation de la liste
    	createTrayIcon();
     
            // Connexion au site
            connexion_site = false;
    }
     
    ...
     
    if(e.tagName() == "connecte")
            {
                connexion_site = true;
            }
    ...
     
     
    void Tool::createTrayIcon()
    {
        // ajout dans le menu si connexion_site = true
        QAction *verif_httpAction = new QAction(tr("Vérifier les alertes"), this);
        connect(verif_httpAction, SIGNAL(triggered()), this, SLOT(requete_http()));
     
        if(connexion_site == true)
        {
            trayIconMenu->addAction(verif_httpAction);
        }
     
    	setContextMenu(trayIconMenu);
    	connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
     
        show();
    }
    Le problème c'est qu'il me fait rien j'ai jamais de QAction dans mon menu même si je suis connecté ou si je ne le suis pas...

    Merci !

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    ou fait tu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(e.tagName() == "connecte")
            {
                connexion_site = true;
            }
    est tu sur que tu le fait avant ta fonction Tool::createTrayIcon()

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut
    Oui c'est bien dans le même ordre que j'ai mis dans des slots différent.

    Enfaite si je mets :
    connexion_site = true; dans void Tool::createTrayIcon().

    Il m'affiche le lien et si je mets false il me le cache bien donc le système fonctionne très bien en lui même mais c'est juste qu'il ne reçoit pas le bool lors de la création du menu enfaite en y réfléchissant c'est assez logique...

    Le menu se créer et seulement après on peux exécuter les Requêtes etc...

    Donc je sais pas comment je peux faire... Une idée ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Par défaut A
    Tu peux déclarer ton action dans le header (pour l'avoir accessible dans toutes les méthodes de ta classe) et l'ajouter sans faire le test de ton booleen dans createTrayIcon, puis tu la cache avec setVisible(false) ou la grise avec setEnabled(false), et lorsque tu es connecté tu la rend visible (ou active):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Tool::Tool()
    {
    	// Creation du menu icone
    	trayIconMenu = new QMenu;
     
    	// Creation de la liste
    	createTrayIcon();
     
            // Connexion au site
            connexion_site = false;
    }
     
    ...
     
    if(e.tagName() == "connecte")
            {
                connexion_site = true;
                verif_httpAction->setVisible(true); // ou bien
    //          verif_httpAction->setEnabled(true); 
     
            }
    ...
     
     
    void Tool::createTrayIcon()
    {
     
        verif_httpAction = new QAction(tr("Vérifier les alertes"), this);
        verif_httpAction->setVisible(false); // ou bien
    //  verif_httpAction->setEnabled(false); 
     
     
        connect(verif_httpAction, SIGNAL(triggered()), this,SLOT(requete_http()));
     
           trayIconMenu->addAction(verif_httpAction);
     
     
    	setContextMenu(trayIconMenu);
    	connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
     
        show();
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut
    Je teste ça demain soir et je te dis si ça fonctionne en tout cas merci beaucoup !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut
    Ca ne fonctionne pas...

    Il n'y a jamais le lien "Vérifier les alertes" !

    Je penche à un souci niveau de déclaration dans "if(e.tagName() == "connecte")
    ".

    Je sais pas si je l'ai bien déclaré... "verif_httpAction->setVisible(true);"
    Si je mets que ça il ne compile pas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/02/2014, 09h23
  2. [AC-2010] Afficher des images dans un état selon une condition
    Par Benez dans le forum VBA Access
    Réponses: 6
    Dernier message: 31/07/2012, 15h13
  3. [XL-2007] Affiche un mot dans une cellule selon une phrase.
    Par Neptune64 dans le forum Excel
    Réponses: 3
    Dernier message: 28/09/2011, 23h02
  4. Réponses: 11
    Dernier message: 06/06/2008, 10h56
  5. Réponses: 14
    Dernier message: 30/05/2006, 16h55

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