Ich habe eine QTableWidget
und möchte, dass Drücken der STRG-Taste beim Klicken auf eine Spaltenüberschrift markiert die ganze Spalte. Der Spaltenindex ist kein Problem, da es ein sectionPressed Signal gibt, das mir den aktuellen Index der Spalte anzeigt. Wie kann ich den Status von Tastaturmodifizierern erhalten, wenn auf eine Spalte geklickt wird?Wie erkennt man die Modifier-Taste bei Mausklick in Qt
Antwort
Versuchen Sie QApplication::keyboardModifiers() ist immer verfügbar
Auf Qt 5 versuchen Sie QGuiApplication::keyboardModifiers().
Der Status der Tastaturmodifizierertasten kann durch Aufrufen der Funktion modifiers() gefunden werden, die von QInputEvent geerbt wurde.
Ich weiß, aber ich habe kein Objekt im zugehörigen Schlitz anderen sectionPressed um dann dem Spaltenindex. Kein Ereignis, kein Sender, nichts. – tfl
Vielleicht könnten Sie den Modifier-Status in mouseReleaseEvent speichern, der vor dem Signal auftreten sollte. –
dies ist wirklich ärgerlich, ich habe eine event installieren und entfernen die sectionPressed Handler
ui->tableWidget->horizontalHeader()->viewport()->installEventFilter(this);
Im event ich, ob ein Schlüssel überprüfen wurde wie so gedrückt
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);
}
Das funktioniert für mich.
if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) == true) {
können Sie QGuiApplication::queryKeyboardModifiers()
verwenden, die einfacher zu bedienen ist:
if(QGuiApplication::queryKeyboardModifiers().testFlag(Qt::ShiftModifier))
{
// Do a few things
}
- 1. Wie erkennt man Benutzerinaktivität in Qt?
- 2. Wie erkennt man USB-Speicher in Qt?
- 3. Qt - Tastatur Taste drücken Sie die gleiche Sache wie Mausklick
- 4. Wie erkennt man eine USB-Verbindung in Linux/Qt
- 5. QAbstractGraphicsShapeItem wählen per Mausklick in qt
- 6. Ein Mausklick und Mausrad mit Qt
- 7. Wie erkennt man die Sperrung von Java-Apps in Netbeans?
- 8. Wie erkennt man die Zugangskontrollmaschine?
- 9. Qt: Wie erkennt man, ob ein Widget ausgewählt ist?
- 10. Wie erkennt man die Unendlichkeitswerte in Scala?
- 11. Wie erkennt man die Wischrichtung in Libgdx?
- 12. Getrennte Aktionen bei jedem Mausklick
- 13. Wie erkennt man die Bootstrap-Version?
- 14. Wie erkennt man die Scrollgeschwindigkeit mit Jquery?
- 15. Wie erkennt man die OSX-Admin-Passwortabfrage?
- 16. Wie erkennt man die Kopfhörer-Taste?
- 17. Wie erkennt man die JavaScript-Methode (Funktion)
- 18. Wie erkennt man die USB-Kabelverbindung in der iOS App?
- 19. Wie erkennt man die Bildschirmauflösung ohne JavaScript?
- 20. Wie erkennt man die Position des Klicks?
- 21. Apple Watch: Wie erkennt man die Bildschirmgröße?
- 22. Wie erkennt man Anwendungsabstürze?
- 23. QT unter OS X, wie man das Klicken auf die App erkennt Dock Icon
- 24. Wie erkennt man Abfrage, die die Sperre in Postgres hält?
- 25. Wie erkennt man Fehler bei der Segmentation mit Valgrind?
- 26. Wie erkennt man Datei endet in Newline?
- 27. Wie man Nachbarzellen richtig erkennt
- 28. Wie erkennt man Mausvorkommnisse in Delphi?
- 29. Fabric JS: Objekt kopieren/einfügen bei Mausklick
- 30. WPF-Listenfeld Element bei Mausklick auswählen
ich habe es schon gefunden – tfl
JETZT stolpere ich über diese Antwort! Nachdem ich alles als eine unordentliche Unterklasse umgeschrieben hatte, konnte ich an das 'Event'-Objekt kommen :-) D'oh! –
Ähnlich wie bei @Freedom_Ben habe ich mir auch alle Beispiele angeschaut, die auf Sub-Classing oder Event-Filter hindeuten ... aber dank meiner Beharrlichkeit (vielleicht ist es Faulheit: P) fand ich diese Antwort. Funktioniert wie ein Charme ... GENAU wie ich wollte! Danke Roku für seine Hilfe! – zeFree