2013-02-10 2 views
0

Я работаю в проекте научного калькулятора с использованием Qt5, я использую QTextEdit в качестве дисплея калькулятора. Я хочу отключить ярлыки (Ctrl + A и Ctrl + C) на дисплее, так как я могу это сделать? Спасибо.Как отключить ярлыки в QTextEdit

+1

Если вы используете QTextEdit в качестве дисплея только, почему не использовать QLabel вместо этого? – 2013-02-10 22:08:41

+0

Ну, я выбираю QTextEdit, потому что он имеет полосы прокрутки по умолчанию, и мне нужны свитки. Также я просто редактирую текст в будущих версиях. – Baso

+0

Тогда QListWidget может быть и вариантом. Кстати, почему вы хотите запретить пользователям копировать текст с дисплея калькулятора? Я бы подумал, что пользователи хотели бы это сделать. – 2013-02-12 16:29:18

ответ

2

Метод фильтра ключей, создайте фильтр событий, который возвращает false для горячих клавиш. Это немного утомительно, но должно получиться.

+1

Не могли бы вы дать мне ссылку или указать мне, где читать «Фильтры для ключей» – Baso

+0

Я нашел это, дайте мне знать, если это поможет. Не очень подробный, но должен помочь вам приступить к работе. http://www.qtforum.org/article/14293/qtextedit-how-to-turn-off-keys-intercepting-like-ctrl-z.html –

1

Фильтрация событий на LineEdit - это правильный способ сделать это, тогда вы можете игнорировать те, которые вы не хотите или переопределяете.

Грязный ярлык (не предназначен для каламбур), чтобы попытаться создать QShortcut и назначить его в пустой слот. Qt, вероятно, будет жаловаться на неоднозначные ярлыки и, вероятно, ничего не сделает с этим. Грязные я знаю :)

QShortcut *shortcut = new QShortcut(QKeySequence("Ctrl+A"), parent); 
QObject::connect(shortcut, SIGNAL(activated()), receiver, SLOT(emptySlot())); 

Может быть, вы даже можете игнорировать соединять часть ...

Смежные вопросы