如何将自定义QWidget添加到QMenubar作为可以切换的动作?

时间:2018-07-16 14:56:04

标签: qt

我有一个Widget类作为QtPlugin。在我的主应用程序中,我想加载此窗口小部件并作为toggledaction添加到菜单栏,以便以后如果我关闭该窗口小部件,则可以通过菜单栏将其打开。如何做到这一点。

由于这不是docketwidget,所以我不能使用以下内容:

ui->menuPlugins->addAction(dockedWidget->toggleViewAction());

我尝试过这样的事情:

void MainWindow::addToPluginsMenu(QWidget *const widget) {
    ui->menuPlugins->setEnabled(true);
    QWidgetAction *ac = new QWidgetAction(this);
    ui->menuPlugins->addAction(ac);
}

已添加操作,但该操作为空且无法切换。谁能为我提供解决方案?

谢谢

1 个答案:

答案 0 :(得分:0)

为了添加切换的动作并使切换后的动作保持可见。

使用setDefaultWidget功能

例如:

// Create menu
QMenu * poMainMenu = new QMenu(this);

// toggled widget
QCheckBox * poCbTest = new QCheckBox("toggle",this);

// set the toggle widget as menu action
QWidgetAction *ac = new QWidgetAction(this);
ac->setDefaultWidget(poCbTest);

// add the action to the menu
poMainMenu->addAction(ac);