[Qt] Interaction clavier souris. [Résolu/Fermé]
Signaler
Char Snipeur
Char Snipeur
- Messages postés
- 9688
- Date d'inscription
- vendredi 23 avril 2004
- Statut
- Contributeur
- Dernière intervention
- 2 octobre 2020
Char Snipeur
- Messages postés
- 9688
- Date d'inscription
- vendredi 23 avril 2004
- Statut
- Contributeur
- Dernière intervention
- 2 octobre 2020
3 réponses
loupius
La solution n'est pas de créer une nouvelle action, mais dans ta fonction:
mousePressEvent(QMouseEvent* event)
d'appeler la fonction statique:
Qt::KeyboardModifiers QApplication::keyboardModifiers()
qui a enregistré l'état du clavier juste avant le clic de la souris.
Tu peux donc ajouter, dans ta fonction, quelque chose du genre:
Bonne journée.
mousePressEvent(QMouseEvent* event)
d'appeler la fonction statique:
Qt::KeyboardModifiers QApplication::keyboardModifiers()
qui a enregistré l'état du clavier juste avant le clic de la souris.
Tu peux donc ajouter, dans ta fonction, quelque chose du genre:
switch (QApplication::keyboardModifiers()) { case Qt::NoModifier: qDebug() << "-> NoModifier"; break; case Qt::ShiftModifier: qDebug() << "-> ShiftModifier"; break; case Qt::ControlModifier: qDebug() << "-> ControlModifier"; break; case Qt::AltModifier: qDebug() << "-> AltModifier"; break; case Qt::MetaModifier: qDebug() << "-> MetaModifier"; break; case Qt::KeypadModifier: qDebug() << "-> KeypadModifier"; break; case Qt::GroupSwitchModifier: qDebug() << "-> GroupSwitchModifier"; break; }En remplaçant évidemment la ligne 'qDebug()...'.
Bonne journée.
Char Snipeur
- Messages postés
- 9688
- Date d'inscription
- vendredi 23 avril 2004
- Statut
- Contributeur
- Dernière intervention
- 2 octobre 2020
Merci, je vais essayé ça.
(quand je parlait d'action, je ne parlais pas d'action QT, maisau sens large)
(quand je parlait d'action, je ne parlais pas d'action QT, maisau sens large)
void Construct::mousePressEvent(QMouseEvent *event) { lastPos = event->pos(); if (event->buttons() & Qt::LeftButton && QApplication::keyboardModifiers()==Qt::NoModifier) { addPoint(event->pos(),0); } else if (event->buttons() & Qt::RightButton && QApplication::keyboardModifiers()==Qt::NoModifier) { addPoint(event->pos(),1); }else if (event->buttons() & Qt::RightButton && QApplication::keyboardModifiers()==Qt::ControlModifier) { delPoint(event->pos(),1); } repaint(); }Merci.
Char Snipeur
- Messages postés
- 9688
- Date d'inscription
- vendredi 23 avril 2004
- Statut
- Contributeur
- Dernière intervention
- 2 octobre 2020
C'est bon, ça fonctionne.
J'ai trouvé une autre solution, il faut surchargé les méthodes virtuelles keyPressEvent et keyReleaseEvent afin de configurer une variable de classe.
J'ai trouvé une autre solution, il faut surchargé les méthodes virtuelles keyPressEvent et keyReleaseEvent afin de configurer une variable de classe.