[Qt] Interaction clavier souris.
Résolu
Char Snipeur
Messages postés
9813
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je ne trouve pas comment avoir une intéraction entre la souris et le clavier. C'est à dire que je voudrais avoir un comportement différent selon qu'une touche du clavier et enfoncé ou non. J'ai la fonction suivante, qui ajoute un point à mon dessin lorsque je clic sur ma fenêtre
J'aimerai savoir ce qu'il faut que je rajoute pour fiare une nouvelle action lorsque j'appuie, par exemple sur "control".
Merci.
je ne trouve pas comment avoir une intéraction entre la souris et le clavier. C'est à dire que je voudrais avoir un comportement différent selon qu'une touche du clavier et enfoncé ou non. J'ai la fonction suivante, qui ajoute un point à mon dessin lorsque je clic sur ma fenêtre
void Construct::mousePressEvent(QMouseEvent *event) { lastPos = event->pos(); if (event->buttons() & Qt::LeftButton) { addPoint(event->pos(),0); } else if (event->buttons() & Qt::RightButton) { addPoint(event->pos(),1); } repaint(); }
J'aimerai savoir ce qu'il faut que je rajoute pour fiare une nouvelle action lorsque j'appuie, par exemple sur "control".
Merci.
A voir également:
- [Qt] Interaction clavier souris.
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
- Souris clavier bloqué - Guide
- Comment taper / sur clavier - Guide
- Clavier de l'ordinateur - Guide
- Clavier iphone chiffre et lettre - Guide
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.
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.