QT:QActionGroup加入QMenu后,谁是QActionGroup成员的父母?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT:QActionGroup加入QMenu后,谁是QActionGroup成员的父母?相关的知识,希望对你有一定的参考价值。
在this example,一些QAction
物体被添加到QActionGroup
。然后,将相同的操作添加到QMenu
作为操作。 QActionGroup
的文档建议通过传入QAction
作为QActionGroup
构造的父级来添加QAction
。但是,我相信对QMenu
添加动作会使QMenu成为父母。
谁将是示例中的父级(即,首先添加到操作组,然后添加到菜单中的操作)?
更一般地说,如果您执行设置父项的操作,父项是否完全转移(即,对象的父项设置为菜单并从QActionGroup子项列表中删除)?我希望如此,但我无法在任何地方看到它,并希望得到确认。
我问,因为我做了相当无害的行动,但看到崩溃表明双重自由。
首先让我们使用parent()
方法检查:
...
leftAlignAct = new QAction(tr("&Left Align"), this);
qDebug()<<"0"<<leftAlignAct->parent();
...
alignmentGroup->addAction(leftAlignAct);
qDebug()<<"1"<<leftAlignAct->parent();
...
formatMenu->addAction(leftAlignAct);
qDebug()<<"2"<<leftAlignAct->parent();
...
输出:
0 MainWindow(0x7fffd078fe80)
1 MainWindow(0x7fffd078fe80)
2 MainWindow(0x7fffd078fe80)
显然,QAction
的父母从未改变,这是在他的创作中建立的所以QMenu
或QActionGroup
适当的QAction
实际上,传递给QAction的父级不会被QMenu或QActionGroup更改。由于QAction可以是QMenu和QToolBar的一部分,因此QMenu获得QAction的所有权并不好。而在QActionGroup中你的任务是根据其他QAction修改状态,不需要适当的QAction。如果要将QActionGroup或QMenu设置为父级,则使用setParent()
以上是关于QT:QActionGroup加入QMenu后,谁是QActionGroup成员的父母?的主要内容,如果未能解决你的问题,请参考以下文章