QActionGroup只对子菜单生效?

chenlong12580 2013-05-19 12:23:50
测试发现QActionGroup对顶级菜单(一级菜单不生效),对子菜单生效。
例如:
alignmentGroup1 = new QActionGroup(this);
alignmentGroup1->addAction(undoAct);
alignmentGroup1->addAction(redoAct);
alignmentGroup1->addAction(cutAct);
alignmentGroup1->addAction(copyAct);
alignmentGroup1->addAction(pasteAct);
这样设置了不生效,如下图:


但是设置子菜单就可以生效:
alignmentGroup = new QActionGroup(this);
alignmentGroup->addAction(leftAlignAct);
alignmentGroup->addAction(rightAlignAct);
alignmentGroup->addAction(justifyAct);
alignmentGroup->addAction(centerAct);
leftAlignAct->setChecked(true);
这样设置可以生效,如下图:



QActionGroup只对子菜单生效么?哪里有文档提到呢?谢谢!
...全文
826 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdwx 2013-05-19
  • 打赏
  • 举报
回复
绝对可以,你把undo和redo从group里去掉,或者去掉中间的分割线。
chenlong12580 2013-05-19
  • 打赏
  • 举报
回复
谢谢,已经明白了!
一、放置到ActionGroup中就默认是exclusive。
二、是否出现选中的标志"小圆点"是通过设置setcheckable完成的。两者并无联系。

(1)不设置checkable,,不管是否加入actiongroup,那么菜单选中之后,不会有啥效果显示,如下图;

(2)设置checkable,不设置actiongroup,那么选中之后就如下图,显示为方框打对勾,代表可以同时选中:

(3)设置checkable,且设置actiongroup,那么选中之后就如下图,显示为小圆点,代表同时只能选中一个:
jdwx 2013-05-19
  • 打赏
  • 举报
回复
测试没问题。
每个action->setCheckble(true);
每个action添加到group
把其中一个action0>setChecked(true);

chenlong12580 2013-05-19
  • 打赏
  • 举报
回复
至少从效果上没看出来,因为点击之后没有出现前面的那个小圆点,如下图:
chenlong12580 2013-05-19
  • 打赏
  • 举报
回复
修改之后依然没有效果,请帮忙看看,谢谢: alignmentGroup1 = new QActionGroup(this); //alignmentGroup1->addAction(undoAct); //alignmentGroup1->addAction(redoAct); alignmentGroup1->addAction(cutAct); alignmentGroup1->addAction(copyAct); alignmentGroup1->addAction(pasteAct);

16,787

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧