0

假设我有一个显示菜单的延迟操作的 QToolButton。所述菜单包含许多可检查的动作。在这种特殊情况下,它是一个激活缩放工具的按钮,并且有 3 个可用的缩放模式 QActions,组织在一个 QActionGroup 中。

如果正在检查菜单中的任何可检查操作,我希望检查该工具按钮。我怎样才能以简洁和 Qt 惯用的方式做到这一点?

4

1 回答 1

1

我不使用 QToolButton,但我做了一些巫毒术,其中 QAction 的状态从各个地方发生了变化。每次调用 QAction::toggled() 时,连接的插槽都需要执行检查。我看到了两种方法来做到这一点。

1:更轻松的方法是简单地增加一些成员,以跟踪该 QToolButton 下已启用多少 QAction。检查 QAction 时增加。当它们未被选中时减少它。如果该计数器 > 0,请检查您的 QToolButton。如果为 0,请取消选中它。这意味着您的插槽需要知道状态,您可以通过将 sender() 转换为插槽内的 QAction* 来做到这一点。

2:如果你有某种类型的 QAction 到 QToolButton 的映射,你可以在每次调用 slot 时迭代它们。这对我来说似乎是一种天真的方法,而且在这种情况下要跟上它更麻烦。我有时必须根据触发的另一个 QAction 将 QAction 添加到 QMenu,所以我已经有了一个类似的映射位置。

于 2015-03-09T12:36:59.400 回答