QAction
我有点坚持基于放置在QToolBar
我有一个包含以下数据的 XML 文件 中创建下拉按钮:
<cfg>
<fields>
<group name="First fields">
<field>filed1</field>
<field>filed2</field>
<field>filed3</field>
</group>
<group name="Second fields">
<field>filed4</field>
<field>filed5</field>
<field>filed6</field>
... etc ...
</group>
</fields>
<button name="MyButton1" />
<button name="MyButton2 />
... etc ...
</cfg>
注意:我不知道会有多少字段组,也不知道会有多少按钮。
因此,首先,我解析以下 xml 文件并提取所需的数据。
对于每个button
我创建自己的QAction
并将其添加到现有工具栏。
稍后,我为每个按钮创建并为每个组和字段QMenu
填充s。QAction
我有QAction
for First fields
, field1
, field2
, etc...
然后,对于每个button
我使用的setMenu
方法并在那里添加创建的菜单。
如果我启动我的应用程序,我可以在带有下拉菜单的工具栏中看到我的按钮,它们看起来就像我预期的那样。
这里的问题是我需要为这个按钮添加一些功能。
我想允许用户检查它们(我setCheckable
全部使用QActions
)并取消选中。当用户使用组名检查操作时,与该组相关的所有字段都会被选中,依此类推。
因为我不知道在启动时我会有多少按钮和字段,所以使用信号和插槽变得很困难。
它迫使我用来QMap
存储 created 的所有地址QAction
,当来自该字段的信号被发出时,然后使用 find 方法查找发出它的动作,并且只有它们执行所需的动作。
问题是:有没有更好的方法来实现我的目标,或者我应该继续使用这种方法?