我正在设计一个具有按钮网格的小部件。单击时,我希望这些按钮向用户提供 3 个可供他们选择的选项(最好是在一个小的下拉菜单中)。当他们选择 3 个选项中的 1 个时,我希望选择该按钮(即,保持按下状态)。我希望与 3 个选项中的每一个相关联的 QAction 能够知道单击了哪个按钮,以便我可以记录单击了网格中的哪个按钮。网格中的每个按钮都需要是独占的,并且在被选中时。呈现的 3 个选项对于所有按钮都是相同的。
我首先从 QGridLayout 中的 QButtonGroup 和 QPushButtons 开始。我能够让按钮按我的意愿独占。当我将按钮从 QPushButton 更改为 QToolButton,并添加一个下拉菜单时,发生了两件事:
- 当他们从菜单中选择一个项目时,按钮不会像我想要的那样保持按下状态。
- 我似乎看不到菜单操作被告知选择了哪个按钮的方法,因此我无法记录选择了哪个按钮。
关于如何实现我正在寻找的功能的任何想法?
编辑:
澄清几点:
- mxn 网格中的每个按钮都代表一个人。
- 每个按钮上的下拉列表可让您选择该人当前正在执行的操作。
- 一次只能有一个人做某事。因此,一次只能按下整个网格中的一个按钮。
- 按钮下拉菜单中的项目在被选中时应该被选中,并且这些项目需要是排他的,所以如果一个按钮被点击两次,下拉菜单中一个新的选中菜单项应该取消前一个选中的菜单项。
- When an item in the button drop down menu is selected, the menu should go away and the button should appear depressed.
- 我需要记录单击的按钮(即行和列)以及从按钮下拉菜单中选择的选项。因此,菜单项信号/插槽需要以某种方式知道单击了哪个按钮。但是,QToolButton::setMenu() 不会将菜单的所有权转移给 QToolButton,所以我不确定如何让 QMenu 的 QActions 中的信号/插槽知道选择了哪个按钮。