Die Erfassung Sondertasten Qt
Ich versuche zu verstehen, wie Sie zu behandeln verschiedene Veranstaltungen mit Qt und habe ein Problem ich kann nicht verstehen, mit-key-Modifizierer z.B. Strg Shift Alt etc. Ich habe eine Standard-Qt-GUI-Anwendung in Qt Creator erweitern QMainWindow und habe festgestellt, dass das folgende Beispiel produziert nicht nachvollziehbare Ergebnisse.
void MainWindow::keyPressEvent(QKeyEvent *event)
{
qDebug() << "Modifier " << event->modifiers().testFlag(Qt::ControlModifier);
qDebug() << "Key " << event->key();
qDebug() << "Brute force " << (event->key() == Qt::Key_Control);
}
Verwendung der Modifikatoren () - Funktion auf das Ereignis nie ist true, während der brute-force-Methode gibt den richtigen Wert.
Was habe ich falsch gemacht?
InformationsquelleAutor user29291 | 2013-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen verwenden, um zu überprüfen, für die Verschiebung:
if(event->modifiers() & Qt::ShiftModifier){...}
diese zu prüfen Kontrolle:
if(event->modifiers() & Qt::ControlModifier){...}
und so weiter. Das funktioniert gut für mich.
EDIT:
Bekommen die Modifikatoren von einem Rad-event, die Sie brauchen, um zu überprüfen, die
QWheelEvent
- Objekt, das an IhrewheelEvent()
Methode:Weitere Tests haben gezeigt, dass Tests mit
if(event->modifiers() & Qt::ControlModifier)
und alle anderen Modifikatoren funktioniert nur innerhalb der keyPressEvent, und wieder funktioniert nur richtig, wenn eine weitere Taste angeschlagen wird, in Verbindung mit dem Modifizierer. Das end-Ziel ist es, diese Arbeit in einer eventFilter für Rad-Veranstaltungen, aber das funktioniert nicht bei allen.Siehe aktualisierte Antwort. Lassen Sie mich wissen, ob das funktioniert für Sie.
Es scheint zu funktionieren auf einem der test-Rechner, muss ich versuchen es auf meinem test-Rechner wie ich hätte schwören können, ich hatte versucht die aktualisierte Antwort bereits.
Getestet der code auf dem anderen computer und entdeckte etwas Interessantes. Das setup ist ein Macbook Pro eingehakt, um einen externen monitor und Tastatur/Maus. Die Modifikatoren funktionieren nur, wenn Sie mit dem touch-pad wird verwendet, um zu Blättern, aber nicht, wenn die externe Maus-Rad verwendet.
InformationsquelleAutor Freedom_Ben
Laut der Dokumentation
QKeyEvent::modifiers
kann nicht immer vertraut werden. VersuchenQApplication::keyboardModifiers()
statische Funktion statt.Vom Qt 5 Doc. – Qt::KeyboardModifiers QKeyEvent::Modifikatoren() const:
Pflege fügen Sie einen link oder ein paar weitere Informationen, was die Dokumentation sagt, dass "
QKeyEvent::modifiers
nicht immer trauen" ?nicht Vertrauen können QKeyEvent::Modifikatoren - qt-project.org/doc/qt-5/qkeyevent.html#modifiers
InformationsquelleAutor Pavel Strakhov