Qt从QMenu删除操作以便稍后再添加

时间:2017-04-20 16:13:13

标签: c++ qt

我需要从QMenu删除操作,但我需要稍后添加。

问题是,我重新添加它们,它们不会出现(可能是因为当我从菜单中删除它们时删除了操作)。

我该怎么做?

请注意,隐藏/禁用等不适合我,我真的需要删除它们

1 个答案:

答案 0 :(得分:2)

您没有准确说出如何创建/添加/删除QMenu中的操作,因此我无法对您当前正在做的事情发表评论,但是......你应该能够自己创建/管理一些操作,然后使用QWidget::addAction(QAction *)重载 - 假设QAction的所有权作为参数传递

QMenu menu;
QAction action_I_Want_to_manage("Save...");
menu.addAction("File...");
menu.addAction(&action_I_Want_to_manage);
menu.exec(QCursor::pos());

/*
 * Remove the action temporarily...
 */
menu.removeAction(&action_I_Want_to_manage);
menu.exec(QCursor::pos());

/*
 * ...stick it back in.
 */
menu.addAction(&action_I_Want_to_manage);
menu.exec(QCursor::pos());