Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gestion du double clic.

Sujet résolu
Anonyme
    23 mars 2008 à 1:30:38

    Bonjour,

    j'ai créer un autre post qui as bugé donc j'en refais un.
    J'ai un souci je n'arrive pas à faire une gestion de mes clics. Double clic ou simple clic.
    Voici mon code il ne fonctionne pas :

    void Tool::iconActivated(QSystemTrayIcon::ActivationReason reason)
    {
            // si on clique gauche
            if(reason == QSystemTrayIcon::Trigger)
            {
             QMessageBox::information(0, tr("programme Live"), tr("Clic gauche."));
            }
     
            // si on double clique gauche
            else(reason == QSystemTrayIcon::DoubleClick)
            {
             QMessageBox::information(0, tr("Programme Live"), tr("Double clic gauche."));
            }
    }
    


    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      23 mars 2008 à 3:31:39

      comme toujours :
      Qu'est ce qui ne fonctionne pas ???
      (explique le comportement souhaité et ce qui se produit)
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        23 mars 2008 à 11:36:06

        Désoler j'ai carrément oublier :(

        Enfaite je voudrais que si la personne clic gauche sur l'icône du programme qui se trouve dans la barre de tache alors on lance une action.

        J'arrive à le faire je le fais actuellement mais je voudrais maintenant ajouter le double clic qui déclencherai un autre action.
        Avec ce code quand je compile j'ai cette erreur :
        Setting up a MinGW/Qt only environment...
        -- QTDIR set to D:\Qt\4.3.3
        -- PATH set to D:\Qt\4.3.3\bin
        -- Adding D:\MinGW\bin to PATH
        -- Adding C:\WINDOWS\System32 to PATH
        -- QMAKESPEC set to win32-g++
         
        D:\Augustin\Programme_Live\Sources>make
        mingw32-make -f Makefile.Release
        mingw32-make[1]: Entering directory `D:/Augustin/Programme
        _Live/Sources'
        g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT
        -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS
        _QMAIN -I"..\..\..\Qt\4.3.3\include\QtCore" -I"..\..\..\Qt\4.3.3\include\QtCore"
         -I"..\..\..\Qt\4.3.3\include\QtGui" -I"..\..\..\Qt\4.3.3\include\QtGui" -I"..\.
        .\..\Qt\4.3.3\include" -I"." -I"d:\Qt\4.3.3\include\ActiveQt" -I"release" -I"."
        -I"..\..\..\Qt\4.3.3\mkspecs\win32-g++" -o release\tool.o tool.cpp
        tool.cpp: In member function `void Tool::iconActivated(QSystemTrayIcon::Activati
        onReason)':
        tool.cpp:35: error: expected `;' before '{' token
        tool.cpp:38: warning: statement has no effect
        mingw32-make[1]: *** [release/tool.o] Error 1
        mingw32-make[1]: Leaving directory `D:/Augustin/Programme_Live/Sources'
        mingw32-make: *** [release] Error 2
        


        Par contre si j'utilise ce code ça compile mais lors du double clic il ouvre : l'action du simple clic et du double clic il ouvre les deux ce qui est normal avec le double if.
        void Tool::iconActivated(QSystemTrayIcon::ActivationReason reason)
        {
                // si on clique gauche
                if(reason == QSystemTrayIcon::Trigger)
                {
                 QMessageBox::information(0, tr("Programme Live"), tr("clic gauche."));
                }
         
            // si on double clique gauche
                if(reason == QSystemTrayIcon::DoubleClick)
                {
                 QMessageBox::information(0, tr("Progreamme Live"), tr("double clic gauche."));
                }
        }
        


        Donc je voulais savoir comment je pourrais faire ?

        Merci.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          23 mars 2008 à 11:55:36

          Essaie de faire plutôt :

          void Tool::iconActivated(QSystemTrayIcon::ActivationReason reason)
          {
             if(reason == QSystemTrayIcon::DoubleClick)
             {
                QMessageBox::information(0, tr("------- Live"), tr("double clic gauche."));
             }
           
             else if(reason == QSystemTrayIcon::Trigger)
             {
                QMessageBox::information(0, tr("------- Live"), tr("clic gauche."));
             }
          }
          



          Edit : A la demande de austin.fla
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            23 mars 2008 à 12:01:19

            ça ne fonctionne pas non plus même problème ça compile mais ça ouvre une fois la fenêtre clic gauche après double gauche et encore clic gauche à la suite dans cette ordre instantané.

            Enfaite ce que je voudrais faire exactement c'est ça :
            Clic gauche => Ouvre le menu
            Clic droit => Ouvre le menu (le même que le clic gauche)
            Double clic gauche => Exécute une action.

            Actuellement le programme fait : clic gauche ouverture d'une action, clic droit menu.

            Voici mon code :
            #include <QtGui>
            #include "tool.h"
             
            Tool::Tool()
            {
                    setIcon(QIcon(":/images/icone.png"));
                    
                    // Creation du menu icone
                    trayIconMenu = new QMenu;
                    
                    // Creation de la liste
                    createTrayIcon();
            }
             
            void Tool::iconActivated(QSystemTrayIcon::ActivationReason reason)
            {
               if(reason == QSystemTrayIcon::DoubleClick)
               {
                  QMessageBox::information(0, tr("Programme Live"), tr("double clic gauche."));
               }
             
               else if(reason == QSystemTrayIcon::Trigger)
               {
                  QMessageBox::information(0, tr("Programme Live"), tr("clic gauche."));
               }
            }
             
            void Tool::createTrayIcon()
            {
                    // creation de quelques actions
                    QAction *quitAction = new QAction(tr("&Quitter"), this);
                    connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
                    
                    // ajout dans le menu
                    QAction *aboutAction = new QAction(tr("A propos"), this);
                    connect(aboutAction, SIGNAL(triggered()), this, SLOT(about()));
                    
                    // ajout dans le menu
                    QAction *configAction = new QAction(tr("Configuration"), this);
                    connect(configAction, SIGNAL(triggered()), this, SLOT(config()));
                    
                    // ajout dans le menu
                    QAction *accueilAction = new QAction(tr("Accueil"), this);
                    connect(accueilAction, SIGNAL(triggered()), this, SLOT(accueil()));
                    
                    // ajout dans le menu
                    QAction *SiteAction = new QAction("Site.fr", this);
                    SiteAction->setFont(QFont("Arial", 12, QFont::Bold));
                    connect(SiteAction, SIGNAL(triggered()), this, SLOT(site()));
                    
                    // ajout dans le menu
                    QAction *forumAction = new QAction("Forum Site", this);
                    connect(forumAction, SIGNAL(triggered()), this, SLOT(forum()));
                    
                    // ajout dans le menu
                    QAction *meteoAction = new QAction("Météo", this);
                    connect(meteoAction, SIGNAL(triggered()), this, SLOT(meteo()));
                
                    // ajout dans le menu
                    QAction *newsAction = new QAction("News", this);
                    connect(newsAction, SIGNAL(triggered()), this, SLOT(news()));
                    
                    // ajout dans le menu
                    QAction *aideAction = new QAction("Aide", this);
                    connect(aideAction, SIGNAL(triggered()), this, SLOT(aide()));
                    
             
                trayIconMenu->addAction(siteAction);
                trayIconMenu->addSeparator();
                trayIconMenu->addAction(forumAction);
                trayIconMenu->addAction(meteoAction);
                trayIconMenu->addAction(newsAction);
                trayIconMenu->addAction(aideAction);
                trayIconMenu->addSeparator();
                trayIconMenu->addAction(accueilAction);
                trayIconMenu->addAction(configAction);
                trayIconMenu->addAction(aboutAction);
                    trayIconMenu->addAction(quitAction);
                    
                    // zone de notification et ajout du menu
                    setContextMenu(trayIconMenu);
                    connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
                    
                    show();
            }
            


            Tout à la fin du code il y a une :
            connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));

            Ce qui ouvre le menu au clic droit. (Je voudrais qu'il ouvre aussi avec le clic gauche)

            PS :J'ai trouvé ce code mais je n'arrive pas à l'adapter...
            void Tool::iconActivated(QSystemTrayIcon::ActivationReason reason)
             {
                 switch (reason) {
                 case QSystemTrayIcon::Trigger:
                 case QSystemTrayIcon::DoubleClick:
                      iconComboBox->setCurrentIndex((iconComboBox->currentIndex() + 1)
                                                   % iconComboBox->count());
                     break;
                 default:
                     ;
                 }
             }
            


            Merci ;)
            • Partager sur Facebook
            • Partager sur Twitter

            Gestion du double clic.

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown