J'ai un QTableWidget
et je voudrais que l'appui sur CTRL tout en cliquant sur un en-tête de colonne marque la colonne entière. Pour obtenir l'index de la colonne n'est pas un problème car il ya un signal sectionPressed qui me donne l'index actuel de la colonne cliquée. Comment puis-je obtenir l'état de tous les modificateurs de clavier quand on clique sur une colonne?Comment détecter la touche de modification sur un clic de souris dans Qt
Répondre
Essayez QApplication::keyboardModifiers() qui est toujours disponible
Sur Qt 5, essayez QGuiApplication::keyboardModifiers().
L'état des touches de modification du clavier peut être trouvé en appelant la fonction modifiers(), héritée de QInputEvent.
Je sais, mais je n'ai pas objet dans la fente associée à sectionPressed autre puis l'indice de la colonne. Pas d'événement, pas d'expéditeur, rien. – tfl
Peut-être que vous pourriez enregistrer l'état des modificateurs dans mouseReleaseEvent qui devrait se produire avant le signal. –
cela est vraiment ennuyeux, je dois installer un eventFilter et retirez le sectionPressed gestionnaire
ui->tableWidget->horizontalHeader()->viewport()->installEventFilter(this);
Dans le eventFilter je peux vérifier wether pression sur une touche comme si
bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
if(event->type() == QEvent::MouseButtonPress)
{
if(Qt::ControlModifier == QApplication::keyboardModifiers())
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
if(mouseEvent)
{
if(mouseEvent->button()== Qt::LeftButton)
{
ui->tableWidget->selectColumn(ui->tableWidget->itemAt(mouseEvent->pos())->column());
return true;
}
}
}
}
return QWidget::eventFilter(object,event);
}
Cela fonctionne pour moi.
if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) == true) {
Vous pouvez utiliser QGuiApplication::queryKeyboardModifiers()
qui est plus simple à utiliser:
if(QGuiApplication::queryKeyboardModifiers().testFlag(Qt::ShiftModifier))
{
// Do a few things
}
- 1. Qt: Détecter un double-clic avec la touche Mod (Maj, CTRL, etc.)
- 2. Comment détecter l'état de la souris dans Qt sans MouseEvent
- 3. Puis-je détecter un clic gauche de la souris? Ou Ctrl + clic droit?
- 4. Comment développer sur un clic de souris
- 5. Qt double clic cocher le bouton gauche de la souris
- 6. Comment détecter l'état enfoncé de la touche shift lorsque vous déplacez la souris
- 7. Comment détecter le clic droit de la souris tout en appuyant sur le bouton gauche de la souris dans IE?
- 8. Imitation/truquage d'un clic de souris et d'une molette de la souris à l'aide de Qt
- 9. Simulation d'un clic de souris dans Windows
- 10. souris sur la transparence dans Qt
- 11. Comment détecter un clic de souris pour un bouton avec menu déroulant
- 12. Comment détecter la touche de tabulation en appuyant sur C#?
- 13. Comment simuler un clic de souris sur le terminal mac?
- 14. Détecter un clic sur un élément externe?
- 15. L'appui sur la touche Entrée du clavier n'est pas équivalent à un clic de souris sur Android?
- 16. Comment répéter un clic de souris dans .NET
- 17. Comment détecter un clic de souris en dehors du contrôle Winform en C#?
- 18. Obtenir la position d'un clic de souris dans un QLabel
- 19. Changement de vidéo sur un clic de souris?
- 20. Double clic sur la souris avec pyHook
- 21. Comment capturer un clic de souris sur un élément dans un ListBox dans WPF?
- 22. comment capturer un clic de souris dans actionscript 3.0
- 23. détecter la souris Déplacer l'événement sur JPanel
- 24. Augmenter le nombre une fois par clic de souris/touche appuyer sur XNA
- 25. OpenGL: clic de souris projection sur la géométrie
- 26. Datagrid + Événement clic droit de la souris
- 27. comment arrêter carrousel 3d sur l'événement de clic de souris
- 28. suivi de la touche utilisateur/souris. C#
- 29. Comment détecter un double clic sur la barre de défilement de la liste?
- 30. Recherche de la position actuelle de la souris dans QT
je l'ai déjà trouvé – tfl
Maintenant, je tombe sur cette réponse! Après avoir réécrit tout comme une sous-classe désordonnée, je pouvais aller à l'objet 'event' :-) D'oh! –
Similaire à @Freedom_Ben Je regardais aussi tous les exemples suggérant un sub-classing ou un event-filter ... mais grâce à ma persistance (peut-être c'est la paresse: P) que j'ai trouvé cette réponse. Fonctionne comme un charme ... EXACTEMENT comme je le voulais! Merci Roku pour son aide! – zeFree