在快捷方式编辑器文本框中阻止应用程序级快捷方式

时间:2014-12-08 11:10:27

标签: c++ qt shortcut hotkeys

我需要让用户在我的应用程序的首选项对话框中更改应用程序中某些操作的键盘快捷键。我已经将QLineEdit子类化为创建一个接受键组合并显示组合的控件(例如:如果用户按下ctrl和I,行编辑将显示 Ctrl + I )。< / p>

如果我在行编辑中输入已存在的应用程序级别操作的快捷方式,则行编辑不会接收该按键,而是触发相关操作。这种行为对我来说是可以接受的,但问题是,行为与某些特殊的快捷方式不一致,例如 Ctrl + C Ctrl + < kbd> A 等。如果我已经为某些操作指定了这样的特殊快捷方式并尝试为其他某个操作设置相同的快捷方式,则行编辑确实会收到该事件(与其他快捷方式不同)并且先前分配的操作不会#39;被触发。

是否有人知道禁用应用程序级快捷方式的方法,以便我可以在行编辑中接收事件并检查自己的重复快捷方式?或者任何人都可以建议一种方法来始终如一地处理用户将现有快捷方式输入到其他快捷方式的场景吗?

1 个答案:

答案 0 :(得分:2)

你根本不应该QLineEdit用于此目的。 Qt有特殊的小部件来执行此操作。它是QKeySequenceEdit。试试这个小部件。

http://qt-project.org/doc/qt-5/qkeysequenceedit.html