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 :

comment faire deplacer un QPushButton à l'aide du curseur?


Sujet :

Qt

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Points : 46
    Points
    46
    Par défaut comment faire deplacer un QPushButton à l'aide du curseur?
    bonjour tous le monde,
    est ce que quelqu'un pourrait m'orienter pour faire déplacer un QPushbutton à l'aide du curseur.
    MERCI.

  2. #2
    Membre actif Avatar de SaintAmand
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Points : 203
    Points
    203
    Par défaut
    Bonsoir,

    Je n'ai pas compris ta question, peux-tu préciser?

    --
    SaintAmand

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    effectivement mon message est ambigu.
    je voudrai créer un programme où l'on clique sur un bouton pour générer d'autres boutons (un à chaque click), ensuite à l'aide de la souris on prend chaque bouton généré (après chaque click) et on le déplace à l'endroit voulu sur la fenêtre. et donc je voudrai savoir comment faire pour déplacer le bouton à l'aide de la souris.
    MERCI

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    En commençant par entrer dans l'évènement Drag http://qt.developpez.com/doc/4.1/qdragenterevent/ et en le suittant avec la classe associée http://qt.developpez.com/doc/4.1/qdragleaveevent/ et http://qt.developpez.com/doc/4.1/qdragmoveevent/

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    Merci :d

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Points : 46
    Points
    46
    Par défaut QMouseEvent pour déplacer unQToolButton
    bonsoir,
    j'ai essayé d'utiliser les QMouseEvent pour déplacer un QToolButton (au lieu d'un QPushButton) mais j'ai pas su ce qu'il faut faire exactement voici le code que j'ai utilisé et qui ne marche pas:

    //déclaration du toolbutton

    toolButton1 = new QToolButton( groupBox3, "toolButton1" );
    toolButton1->setGeometry( QRect( 80, 250, 40, 40 ) );

    //utilisation du MouseEvent
    toolButton1->QMouseEvent (MouseMove mm, mm->pos(),0,LeftButton);

    connect(toolButton1 , SIGNAL(pressed()),SLOT(mouseMoveEvent(mm)) );

    void f::mouseMoveEvent( QMouseEvent * e )
    {
    mouseHandle( e->pos() );
    }
    void f::setPoint( int i, int j )
    {
    if ( i < 1 || i > maxi || j < 1 || j > maxi )
    return;
    cells[current][i][j] = TRUE;
    repaint( index2pos(i), index2pos(j), SCALE, SCALE, FALSE );
    }

    void f::mouseHandle( const QPoint &pos )
    {
    int i = pos2index( pos.x() );
    int j = pos2index( pos.y() );
    setPoint( i, j );
    }



    les déclarations des variables et méthodes sont faites dans le fichier header.
    (le QToolButton est déclaré comme suit: QToolButton* toolButton1;dans le header)
    les méthodes : mouseMoveEvent, setPoint et mouseHandle sont tirées d'un tutoriel

    à la compilation il me demande la déclaration de MouseMove, comment pourrais-je déclarer ce type?
    MERCI

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut

    C'est quoi cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     toolButton1->QMouseEvent (MouseMove mm, mm->pos(),0,LeftButton);
    MouseMove est un un enum qui se trouve dans QEvent, donc on l'appelle déjà par QEvent::MouseMove. mm, c'est quoi ?

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    par cette ligne, je voulais associer l'evenement de la souris au bouton concerné . et donc il suffit juste de l'appeler avec QEvent::MouseMove. mm (mm désignant l'evenement)??
    mais comment l'associer au bouton que l'on veut déplacer?
    encore une question:
    est ce que les méthodes mouseMoveEvent, setPoint et mouseHandle, sont bien celle qui répondent au problème de déplacement?
    MERCI

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    QEvent::MousMove est un nombre pas un type de données, donc ça ne marche pas.
    Pour ta solution, je ne sais pas, peut-être que mouseHandle répond à tes attentes, je ne sais pas. En tout cas, je ne peux que te conseiller de lire de manière plus approfondie la doc

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 78
    Points : 46
    Points
    46
    Par défaut problème résolu
    Bonjour tout le monde,
    j'ai réglé le problème, et voici les fonctions requises:

    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
     
    //Myclass est la classe principale
    void Myclass::mousePressEvent( QMouseEvent *e )
        {
            if ( e->button() != LeftButton ) // le déplacement se fait lorsque le
                return;                             // bouton gauche de la souris est préssé
            mousePressed = TRUE;  // un booléen initialisé auparavant à FALSE
         }
     
    void Myclass::mouseMoveEvent( QMouseEvent *e )
        {
            if ( !mousePressed )
                return;
            QPoint pnt = e->pos();       
            bloc2->setGeometry( QRect( pnt.x(),pnt.y(), 40, 40 ) );
           //ici bloc2 est le QPushButton dont les dimensions sont (40,40)
           //pnt.x() et pnt.y() désigneront la nouvelle position du bloc2 selon 
           // le mouvement de la souris
          }
    void Myclass::mouseReleaseEvent( QMouseEvent *e )
        {
            if ( e->button() == LeftButton )
                mousePressed = FALSE;
        }
    Bonne journée à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [aide] Comment Faire
    Par Diablo_22 dans le forum Licenciement
    Réponses: 8
    Dernier message: 23/01/2008, 13h46
  2. Réponses: 2
    Dernier message: 01/01/2008, 17h34
  3. Comment faire une aide d'une application delphi ?
    Par draiah dans le forum Delphi
    Réponses: 7
    Dernier message: 09/04/2007, 15h59
  4. aide comment faire sauter un personnage
    Par MAXIMIX dans le forum SDL
    Réponses: 3
    Dernier message: 24/05/2006, 09h05
  5. [C#] A l'aide! comment faire pour modifier un noeud?
    Par irnbru dans le forum Windows Forms
    Réponses: 12
    Dernier message: 15/11/2005, 17h41

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