QAction 父菜单

Posted

技术标签:

【中文标题】QAction 父菜单【英文标题】:QAction parent menu 【发布时间】:2015-08-14 08:51:54 【问题描述】:

如何获取给定 QAction 的父菜单? 我在子菜单中添加了一个 QActions。

有没有办法知道每个动作的父菜单名称?

ui->action567->parent() //return MainWindow
ui->action567->parentWidget() //return MainWindow
ui->action567->menu() //return nullptr.
ui->action567->actionGroup() //return nullptr.

我可以通过这种方式获取父菜单:

for( QMenu * menu : ui->menuBar->findChildren< QMenu * >() )

    if( menu->actions().contains( ui->action567 ) )
    
        qDebug() << menu << ui->action567 ;
        break;
    

是否存在更好、更原生的方式?

【问题讨论】:

请注意,一个操作可以添加到多个菜单、工具栏等。因此,在一般情况下,没有一个父项。 【参考方案1】:

associatedWidgets() 将返回一个添加此操作的小部件列表。

ui->action567->associatedWidgets();

【讨论】:

以上是关于QAction 父菜单的主要内容,如果未能解决你的问题,请参考以下文章

QAction QActionGroup QMenu 使用方法

Pyside2 QAction 会自动触发一次,但不会在用户单击菜单时触发

如何使用 QtTest 库访问 QAction?

PyQt5:可以通过 QPushButton 触发 QAction 功能吗

防止 QMenu 在其 QAction 之一未触发时关闭

如何获得禁用的 QAction 元素的触发信号?