bonjour tous le monde,
est ce que quelqu'un pourrait m'orienter pour faire déplacer un QPushbutton à l'aide du curseur.
MERCI.
bonjour tous le monde,
est ce que quelqu'un pourrait m'orienter pour faire déplacer un QPushbutton à l'aide du curseur.
MERCI.
Bonsoir,
Je n'ai pas compris ta question, peux-tu préciser?
--
SaintAmand
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
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/
Merci :d
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
C'est quoi cette ligne :
MouseMove est un un enum qui se trouve dans QEvent, donc on l'appelle déjà par QEvent::MouseMove. mm, c'est quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part toolButton1->QMouseEvent (MouseMove mm, mm->pos(),0,LeftButton);
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
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
Bonjour tout le monde,
j'ai réglé le problème, et voici les fonctions requises:
Bonne journée à tous
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; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager