[Qt] Interaction clavier souris.
Résolu
Char Snipeur
Messages postés
10112
Statut
Contributeur
-
Char Snipeur Messages postés 10112 Statut Contributeur -
Char Snipeur Messages postés 10112 Statut Contributeur -
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
- Clavier de l'ordinateur - Guide
- & Sur clavier - 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.