使用QMenu检查QToolButton

时间:2012-04-04 18:56:02

标签: c++ qt signals-slots

我正在设计一个具有按钮网格的小部件。单击时,我希望这些按钮向用户显示3个选项(理想情况下在一个小的下拉菜单中),供他们选择。当他们选择3个选项中的1个时,我希望选择该按钮(即保持按下)。我希望与3个选项中的每一个相关联的QAction能够知道单击了哪个按钮,以便我可以记录单击网格中的哪个按钮。网格中的每个按钮都必须是独占的,并且在选中时。所有按钮的3个选项都是相同的。

我首先在QGridLayout中使用QButtonGroup和QPushButtons。我能够让按钮独占我想要的。当我将按钮从QPushButton更改为QToolButton并添加了一个下拉菜单时,发生了两件事:

  • 当他们从菜单中选择一个项目时,该按钮不会像我想要的那样保持按下状态。
  • 我似乎无法看到菜单操作被告知选择了哪个按钮的方法,因此我无法记录选择了哪个按钮。

关于如何实现我正在寻找的功能的任何想法?

编辑:

一些澄清要点:

  • m x n网格中的每个按钮代表一个人。
  • 每个按钮上的下拉列表可让您选择该人当前正在执行的操作。
  • 一次只能有一个人做某事。因此,一次只能按下整个网格中的一个按钮。
  • 选中按钮下拉菜单中的项目应该会被选中,这些项目必须是独占的,所以如果单击一个按钮两次,下拉菜单中新选中的菜单项应该取消选中以前的项目一。
  • 当选择按钮下拉菜单中的项目时,菜单应该消失,按钮应该显示为按下。
  • 我需要记录单击的按钮(即行和列)以及从按钮下拉菜单中选择的选项。所以菜单项信号/插槽需要知道点击了哪个按钮。但是,QToolButton :: setMenu()不会将菜单的所有权转移到QToolButton,所以我不知道如何让QMenu的QActions中的信号/插槽知道选择了哪个按钮。

1 个答案:

答案 0 :(得分:0)

QObject :: sender将告诉您QObject发出的信号