Ich habe eine einfache Anwendung mit nur einem QPlainTextEdit, im Grunde das gleiche wie Qt Beispiel hier:Verhindern Schlüsselereignisse
http://qt-project.org/doc/qt-5.1/qtwidgets/mainwindows-application.html
Wenn ich Strg + Z drücken, ruft sie rückgängig zu machen. Wenn ich Strg + A drücke, wird der gesamte Text ausgewählt. Das ist in Ordnung.
Wenn ich jedoch Strg + E oder Strg + R drücke, die nicht im Menü definiert sind, erscheinen die Zeichen "e" und "r" in QSimpleTextEdit.
Wie verhindere ich das? Wie man Tastendrucke, die als Menüverknüpfungen definiert wurden, "filtert", damit sie funktionieren, und "verhindern", dass Tastendrucke, die nicht als Menüverknüpfungen definiert sind, in der Bearbeitung erscheinen?
Können Sie spezifischer bitte sein? Insbesondere muss ich, wenn ich mit der ersten Option gehe, alle im Menü definierten Schlüssel überprüfen, sie loslassen und alles andere ignorieren? Mit anderen Worten: Muss ich manuell alle Menüverknüpfungen entweder in der Unterklasse oder in eventFilter auflisten, oder gibt es eine Möglichkeit, die Menüdefinition automatisch aus dem Menü zu ziehen? –
Ich glaube nicht, dass Sie die definierten Kombinationen leicht auslesen könnten, aber schließlich könnten Sie '' QKeyEvent :: text(). Size()> 0 && QKeyEvent :: Modifikatoren! = Qt :: NoModifier'' benutzen. Ich denke '' text() '' zeigt nur den resultierenden Text, aber ich muss das testen. Aber im Allgemeinen reimplementiert das Ereignis wird größer als ursprünglich geplant, zumindest geschah dies immer uns –
Also nur um zu überprüfen, ob ich verstanden habe: Wenn das oben Trick nicht funktionieren würde (ich werde es versuchen, obwohl!), Muss man sich erinnern Verknüpfungen, die die Anwendung verwendet (A = Alles auswählen, X = Ausschneiden, Z = Rückgängig, ...) und dann in der Unterklasse oder EvenFilter manuell überprüfen, ob der Ereignisschlüssel zu A, X, Z, ... gehört und alles ablehnt sonst. Ist das richtig? Weil, weißt du, dann muss ich es zweimal eingeben und wenn ich der Anwendung eine Abkürzung hinzufüge und vergess, die Unterklasse zu ändern, dann wird es brechen ... –