C++ 如何在具有不同文本的两个qmenu中使用相同的QAction?

C++ 如何在具有不同文本的两个qmenu中使用相同的QAction?,c++,qt,C++,Qt,因此,我想在多个菜单(一个主菜单和一些上下文菜单)中公开一个操作。我希望每个菜单的菜单项文本略有不同(以使助记符唯一,并根据需要在每个上下文中或多或少详细) 在MFC中(我现在很高兴从它迁移出去),这很容易,因为每个菜单项都是单独定义的,并且可以映射到相同的ID,该ID将链接到处理程序。但是在Qt中,QAction封装了行为以及文本/图标等。因此,我认为没有直接支持它根据使用位置返回不同的文本 我的想法是,对于每个位置,创建一个“代理”QAction,该代理具有特定于该上下文的文本,并简单地将其

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

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


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

我认为你建议的解决方案是最简单的。您可以在激活菜单时动态更改操作的文本,但我觉得这更复杂。

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

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


希望这有帮助。

我不知道MFC,但在Qt中,QAction只是一个接口。一个QAction对象只能显示一个文本。但QAction的实际操作是,您将在Qt所称的插槽中实现。然后,您可以有尽可能多的接口(或QActions对象)指向同一个插槽-只需将您想要做相同事情的所有QAction对象连接到同一个插槽


希望这有帮助。

好的,谢谢,这很有意义。我没有这样看它,因为我正在使用的既定技术是将QAction子类化,并在该类上的一个插槽中(连接到同一类上的信号)实际执行工作(或部分工作)。如果它不是公共插槽,您可以始终将信号连接到信号。好的,谢谢,这很有意义。我没有这样看它,因为我正在使用的既定技术是将QAction子类化,并在该类上的一个插槽(连接到同一类上的信号)中实际执行工作(或部分工作)。如果它不是公共插槽,则始终可以将信号连接到信号。