[Qt] Interaction clavier souris.
Résolu/Fermé
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
-
20 avril 2009 à 08:35
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 20 avril 2009 à 15:57
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 20 avril 2009 à 15:57
A voir également:
- [Qt] Interaction clavier souris.
- Souris clavier bloqué - Guide
- Comment taper / sur clavier - Guide
- Telecharger clavier arabe تنزيل لوحة المفاتيح العربية - Télécharger - Divers Web & Internet
- Changer clavier qwerty en azerty - Guide
- Télécharger clavier arabe samsung - Télécharger - Bureautique
3 réponses
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
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
20 avril 2009 à 12:34
20 avril 2009 à 12:34
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
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
20 avril 2009 à 15:57
20 avril 2009 à 15:57
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.