Qt4 在Qt设计器中操作的多个键盘快捷键

Qt4 在Qt设计器中操作的多个键盘快捷键,qt4,keyboard-shortcuts,designer,Qt4,Keyboard Shortcuts,Designer,我在Qt designer上遇到了一个奇怪的问题。我有以下刷新操作的快捷方式:F5,Ctrl+R 其想法是,在Macintosh上,Ctrl+R映射到更直观的Command+R,而在Windows上,F5完成了这项工作 问题在于,似乎只有第一条捷径处于活动状态。我有没有办法改变动作的快捷方式,这样我们就可以在Mac上使用Ctrl+R,在其他任何地方都可以使用F5?我知道我可以在代码中完成这项工作,但我宁愿在designer中完成。这可以用几种方法解决。首先,您可以使用并指定QKeySequenc

我在Qt designer上遇到了一个奇怪的问题。我有以下刷新操作的快捷方式:F5,Ctrl+R

其想法是,在Macintosh上,Ctrl+R映射到更直观的Command+R,而在Windows上,F5完成了这项工作


问题在于,似乎只有第一条捷径处于活动状态。我有没有办法改变动作的快捷方式,这样我们就可以在Mac上使用Ctrl+R,在其他任何地方都可以使用F5?我知道我可以在代码中完成这项工作,但我宁愿在designer中完成。

这可以用几种方法解决。首先,您可以使用并指定
QKeySequence::Refresh
作为快捷方式。另一种方法是创建
QList
,其中包含2个
QKeySequence
元素,这些元素是通过以下方式创建的:
Qt::Key_F5
Qt::Key_Control
+
Qt::Key_R
(在Mac OS X上,将分配button命令,在其他操作系统上,则分配Ctrl)。然后将此列表传递给。在此之后,在Max OS X上,F5和Command+R将触发刷新操作,在其他系统上,F5和Ctrl+R将触发刷新操作。最后,如果要在Mac OS X上设置Command+R而不设置F5,在其他系统上设置F5而不设置Ctrl+R,则应执行条件编译,即:

#ifdef Q_WS_MAC
//set Qt::Key_Control + Qt::Key_R
#else
//set Qt::Key_F5

有关操作系统定义的更多信息,您将发现

我知道如何在代码中执行此操作,我的问题是如何在设计器中执行此操作:)@cheez在动作编辑器中的设计器中,您必须单击动作,然后在快捷方式字段中按键。在Mac OS X上,Ctrl将由qt更改为Command,无需任何额外工作。是否有办法更改操作的快捷方式,以便在Mac和F5上的其他位置都可以使用Ctrl+R?我知道我可以在代码中完成这项工作,但我宁愿在designer中完成。我不知道在designer中设置依赖于操作系统的东西的可能性。可能没有这种能力,因为(正如你在我的回答中所看到的)检测操作系统相当于编译(定义)的问题,所以你必须编写你的快捷方式。