首页 > 解决方案 > How to add custom QWidget to the QMenubar as action which can be toggled?

问题描述

I have an Widget class as a QtPlugin. In my main application i want to load this widget and add to menubar as toggledaction, so that later if i close the widget i can open it via the Menu bar. How can this be achieved.

As this is not a docketwidget i cannot use the following:

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

I have tried something like this:

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

An action is added but it is empty and cannot be toggled. Could anyone provide me a solution?

Thank you

标签: qt

解决方案


为了添加切换操作并在切换操作后保持它们可见。

使用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);

推荐阅读