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 :

Qt et bureau windows


Sujet :

Qt

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Qt et bureau windows
    Bonjour, je débute avec Qt donc je bloque sur pas mal de fonctionnalités que devra gérer mon programme.

    On verra peut être plus tard pour les suivants , pour l'instant celui qui m'embete le plus est que je ne sais pas comment faire pour afficher un simple menu sur le bureau, au passage de la souris sur une zone définie.

    Je m'explique, en gros mon programme devra permettre de définir des zones différentes sur le bureau, lorsque le pointeur de la souris passera sur une des zone, un menu contenant des informations propres à chaque zone devra apparaitre.

    Cela semble assez simple à programmer pour une application ayant une fenêtre principale, mais la sur le bureau windows je ne sais pas comment faire.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Bonjour et bien venu sur le forum.
    Je n'ai pas tout compris mais, pour commencer tu devrait regarder
    http://qt.developpez.com/doc/4.3/qdesktopwidget/
    et l'exemple
    http://qt.developpez.com/doc/4.3/desktop-screenshot/
    et aussi
    http://qt.developpez.com/doc/4.3/qmenu/

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai bien regardé la doc sur la classe Qdesktopwidget et l'exemple des screenshots mais j'ai du mal à vraiment comprendre comment s'en servir.

    Mon but, est de pouvoir faire apparaitre un menu sur le bureau windows, (comme le click droit propre à windows).
    Je ne sais pas si cette classe me permet de le faire, ou s'il faut que je trouve une autre solution.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par chayy Voir le message
    J'ai bien regardé la doc sur la classe Qdesktopwidget et l'exemple des screenshots mais j'ai du mal à vraiment comprendre comment s'en servir.

    Mon but, est de pouvoir faire apparaitre un menu sur le bureau windows, (comme le click droit propre à windows).
    Je ne sais pas si cette classe me permet de le faire, ou s'il faut que je trouve une autre solution.
    Bonjour,
    desolé du retard, j'avais un peu zappé...

    Qdesktopwidget hérite de QWidget, tu peut donc heriter de cette class et redéfinir le traitement de certain événement comme :
    void mouseDoubleClickEvent ( QMouseEvent * event )
    void mouseMoveEvent ( QMouseEvent * event )
    void mousePressEvent ( QMouseEvent * event )
    void mouseReleaseEvent ( QMouseEvent * event )

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour ton aide.

    J'ai essayé de redéfinir le mouseMoveEvent pour arriver à régler mon problème mais je coince.

    En fait j'ai essayé de récupérer un QRect correspondant à la taille de mon bureau, j'ai ensuite divisé la hauteur de celui ci par 2, et dans le code de mouseMoveEvent je regarde si le curseur de la souris " rentre " dans ce rectangle. Lorsqu'il rentre je crée mon menu.
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    #include <QtGui>
    #include "desktop.h"
    #include <iostream>
    #include <QDesktopWidget>
    #include <QEvent>
    #include <QPoint>
    #include <Qt>
    #include <QWidget>
    #include<QCursor>
    #include<QRect>
     
     
     Desktop::Desktop()
     {
        QDesktopWidget *widget = new QDesktopWidget;
    	x = widget->primaryScreen();
     
    	rect1 = widget->availableGeometry ( x );
     
    	rect1.setY(rect1.top()/2);
     
     	createActions();
     
     }
     
     
     void Desktop::mouseMoveEvent ( QMouseEvent * event )
     { 
         QPoint test = QCursor::pos();
     
         if (rect1.contains( test, false ) )
    	 {
    		QMenu menu(this);
    		menu.addAction(cutAct);
    		menu.addAction(copyAct);
    		menu.addAction(pasteAct);
    		menu.exec(QCursor::pos());
    	 }
     }
     
     
     
     void Desktop::cut()
     {
         infoLabel->setText(tr("Invoked <b>Edit|Cut</b>"));
     }
     
     void Desktop::copy()
     {
         infoLabel->setText(tr("Invoked <b>Edit|Copy</b>"));
     }
     
     void Desktop::paste()
     {
         infoLabel->setText(tr("Invoked <b>Edit|Paste</b>"));
     }
     
     
     
     void Desktop::createActions()
     {
     
     
         cutAct = new QAction(tr("Cu&t"), this);
         cutAct->setShortcut(tr("Ctrl+X"));
         cutAct->setStatusTip(tr("Cut the current selection's contents to the "
                                 "clipboard"));
         connect(cutAct, SIGNAL(triggered()), this, SLOT(cut()));
     
         copyAct = new QAction(tr("&Copy"), this);
         copyAct->setShortcut(tr("Ctrl+C"));
         copyAct->setStatusTip(tr("Copy the current selection's contents to the "
                                  "clipboard"));
         connect(copyAct, SIGNAL(triggered()), this, SLOT(copy()));
     
         pasteAct = new QAction(tr("&Paste"), this);
         pasteAct->setShortcut(tr("Ctrl+V"));
         pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current "
                                   "selection"));
         connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste()));
     
     
     
     
     }
    Cette première version me sers seulement de test, je pense qu'il y aura des problèmes notamment le menu qui risque de se recréer à l'infini tant que je me déplace dans le rectangle ...

    En tout cas, lorsque je compile le tout et que je le lance j'ai beau me deplacer sur le bureau il ne se passe rien ...

    Un petit coup de pouce serait le bienvenue

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 033
    Points : 13 968
    Points
    13 968
    Par défaut
    J'ai essayé vite fait.
    Ca ne semble pas marcher comme je pensais.. Donc je ne sais pas. Il ne faut pas faire comme je l'ai dit
    Je regarderai quand j'aurai un peu de temps..

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ok merci, je vais fouiller aussi encore de mon côté.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Il semblerait que le problème soit bien plus important que ce je pensais ...

    Apparemment, le QdesktopWidget ne peut pas être utilisé comme un widget normal, il permet juste d'obtenir des informations sur le bureau ...
    De plus, il semblerait qu'il ne soit pas possible de créer des hooks sur le bureau ..

    Du coup je me demande bien ce qu'il reste comme possibilité, pour arriver à capturer les événements souris sur le bureau et y afficher un menu ...

    On m'a parlé de active desktop mais je ne connais pas en détail, je ne sais donc pas si ça va me permettre de faire ce que je veux, puis ça m'a l'air assez lourd d'utiliser une page web ...

    Il doit bien y avoir une autre solution .. quelqu'un en a une ?


    Edit : Bon bah deux solutions pour l'instant, poser un hook souris et vérifier avec WindowsFromPoint() que je suis bien sur le bureau.

    Ou placer un Qwidget invisible sur tout l'écran pour capturer les événements

Discussions similaires

  1. Automatiser la mise en place d'un bureau Windows XP
    Par MacGyverIII dans le forum Windows XP
    Réponses: 5
    Dernier message: 30/10/2008, 15h16
  2. Dessiner sur le Bureau Windows et Effacer
    Par guedelmalin dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 15/08/2007, 16h43
  3. Animation pour bureau Windows
    Par kahya dans le forum Windows
    Réponses: 1
    Dernier message: 12/02/2007, 16h51
  4. Etendre le bureau windows sur un autre pc
    Par Pysk0B0b dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 24/08/2006, 19h58
  5. popup du bureau windows
    Par kanzarih dans le forum Delphi
    Réponses: 1
    Dernier message: 13/08/2006, 17h59

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