根据其自定义快捷方式触发动作

时间:2019-01-13 14:17:21

标签: qt user-interface qt5 action hotkeys

假设我要采取一些措施。为此,我可以创建一个QAction对象,并将其triggered()信号连接到执行所需功能的插槽。另外,我可以有一个与操作相关的快捷方式;通过更改快捷方式,我将能够使用该快捷方式执行相同的操作。

我现在的问题是我想设置为动作的“快捷方式”,还包含按下鼠标的按钮(并且鼠标事件无法分配给动作快捷方式);说我要Shift+Left mouse button。也许这听起来有些刺耳,但请忍受我。

我需要什么?好吧,我有一个按钮和一个动作(例如“执行脚本”)。我希望在单击Shift+Left click时执行脚本,并且希望自定义此“快捷方式”,即用户应该能够更改为Ctrl+Left click的快捷方式(从某些GUI元素,例如按钮文字),现在Ctrl+Left click应该执行脚本。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

注意:作为用户,我希望由鼠标按钮触发的动作取决于位置。如果是这样,则以下内容会更简单。

Qt无法选择指定这种快捷方式。

您可以通过对鼠标事件做出反应来滚动自己的鼠标:

  • 也许您有一个事件处理程序Windows SSPI
  • 或通用mousePressEvent()
  • 或利用eventFilter(QObject *obj, QEvent *evt)

无论如何,您都需要在某个地方赶上QApplication::notify

根据需要选择尽可能多的小部件(或qApp)。

在那里,将QMouseEvent *mouseEvtmouseEvt->button()与您的动作列表进行比较并触发所选的动作。当用户选择其他触发方式时,请调整您的操作列表。


让我们实践一下:

mouseEvt->modifiers()