У меня есть простое приложение, с помощью только одного QPlainTextEdit, в основном так же, как, например в Qt здесь:Предотвращение ключевых событий
http://qt-project.org/doc/qt-5.1/qtwidgets/mainwindows-application.html
При нажатии Ctrl + Z, он вызывает откат. Когда я нажимаю Ctrl + A, он выбирает весь текст. Хорошо.
Но когда я нажимаю Ctrl + E или Ctrl + R, которые не определены в меню, символы «e» и «r» появятся в QSimpleTextEdit.
Как предотвратить это? Как «фильтровать» нажатия клавиш, которые были определены как ярлыки меню и поддерживать их работоспособность, и «предотвращать» те нажатия клавиш, которые не определены, как ярлыки меню, появляющиеся в редакторе?
Не могли бы вы быть более конкретным, пожалуйста? В частности, перейдя к первому варианту, нужно ли проверять каждый из всех ключей, определенных в меню, отпускать их и игнорировать все остальное? Другими словами: мне нужно вручную перечислять все ярлыки меню либо в подклассе, либо в eventFilter, или есть способ автоматически вывести из определения меню? –
Я не думаю, что вы могли бы легко прочитать определенные комбинации, но в конце концов вы могли бы использовать '' QKeyEvent :: text(). Size()> 0 && QKeyEvent :: modifiers! = Qt :: NoModifier''. Я думаю, что '' text() '' показывает только полученный текст, но мне нужно будет это проверить. Но, как правило, повторное выполнение события становится больше, чем первоначально запланировано, по крайней мере, это всегда происходило с нами –
Итак, просто чтобы проверить, понял ли я: если этот трюк не будет работать (я попробую, хотя!), Нужно помнить, какие ярлыки, используемые приложением (A = Выбрать все, X = Вырезать, Z = Отменить, ...), а затем в подклассе или evenFilter вручную проверить, был ли ключ события одним из A, X, Z, ... и отклонить все остальное. Это верно? Потому что, знаете ли, мне нужно ввести его дважды, и если я добавлю ярлык к приложению и забуду изменить подкласс, тогда он сломается ... –