因此,我有一个要在多个菜单(主菜单之一和某些上下文菜单)中显示的 Action 。我希望菜单项的文本在菜单之间有所不同(以使助记符唯一,并在每种情况下根据需要或多或少地冗长)。

在MFC中(我现在很乐意迁移),这很容易,因为每个菜单的项目都是单独定义的,并且可以映射到相同的ID,该ID将链接到处理程序。在Qt中,QAction封装了行为以及text / icon / etc。因此,我不认为直接支持它会根据使用位置返回不同的文本。

我对如何处理此问题的想法是,针对每个位置创建一个“代理” QAction,它具有特定于该上下文的文本,并且只是将其triggered()信号连接到原始QAction的那个。但是我认为我应该首先检查是否有更简单的方法来解决此问题。

最佳答案

我不了解MFC,但在Qt中-QAction只是一个接口(interface)。一个QAction对象只能显示一个文本。但是QAction的真正作用是,您将在Qt所谓的SLOT中实现。然后,您可以有多个接口(interface)(或QActions对象)指向同一插槽-只需将要执行相同操作的所有QAction对象连接到同一插槽即可。

希望这可以帮助。

关于c++ - 如何在两个带有不同文本的QMenu中使用相同的QAction?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5159901/

10-12 17:29