如何在两个不同文本的QMenus中使用相同的QAction?

时间:2011-03-01 20:24:57

标签: c++ qt

所以我想在多个菜单中公开一个动作(一个主菜单和一些上下文菜单)。我希望菜单项文本在菜单之间略有不同(使助记符唯一,并在每个上下文中根据需要或多或少地详细说明)。

在MFC(我有幸从此刻迁移)这很容易,因为每个菜单的项目都是单独定义的,并且可以映射到相同的ID,它将链接到处理程序。但是在Qt中,QAction封装了行为以及文本/图标/等。所以我不认为有直接支持它返回一个不同的文本,取决于它的使用位置。

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

2 个答案:

答案 0 :(得分:4)

我不知道MFC,但在Qt中 - QAction只是一个界面。一个QAction对象只能显示一个文本。但真正的动作是QAction,你将在Qt调用SLOT实现。然后你可以有尽可能多的接口(或QActions对象)指向同一个插槽 - 只需将你想要做同样事情的所有QAction对象连接到同一个插槽。

希望这有帮助。

答案 1 :(得分:1)

我认为你建议的解决方案是最简单的。当菜单被激活时,您可以动态地更改动作的文本,但这对我来说看起来更复杂。