QT如何删除操作菜单项

Posted

技术标签:

【中文标题】QT如何删除操作菜单项【英文标题】:QT How to remove the action menu item 【发布时间】:2010-03-09 07:19:09 【问题描述】:

当我将小部件添加到主窗口时,默认情况下会显示操作菜单项, 怎么去掉?

menuBar()->setVisible(false);

verAction = new QAction(tr("&Version"),this);
menuBar()->addAction(verAction);
connect(verAction, SIGNAL(triggered()),this, SLOT(displayVersion()));

displayAction = new QAction(tr("&Display"),this);
menuBar()->addAction(displayAction);


 connect(displayAction, SIGNAL(triggered()),this, SLOT(displayMessage()));

exitAction = new QAction(tr("&Exit"),this);
menuBar()->addAction(exitAction);
connect(exitAction, SIGNAL(triggered()),this, SLOT(close()));

谢谢

【问题讨论】:

【参考方案1】:

如果你想隐藏一个 QAction 并在需要时显示它,你可以使用setVisible 函数。

如果你想从 QMainWindow 中移除菜单栏,你可以使用 QT_NO_MENUBAR 预处理器来移除 QMenuBar 的所有使用。如果你没有使用 QMainWindow 提供的功能,也许你可以使用一个简单的 QWidget 作为应用程序的主窗口。

[编辑] 如果你想在运行时隐藏 QActions,你会发现它们是 QMainWindow 的 UI 的成员。例如,如果您有一个名为 actionTest 的 QAction,您将像这样访问它:this->ui->actionTest->setVisible(false);

【讨论】:

Ok.. 如何获得 qaction 菜单项的访问权限?.. 我将从菜单中获取操作列表。如果我迭代它只提供操作菜单.. 那该怎么办? 你到底想做什么? 我想从菜单栏中删除 Qaction 菜单.. 那么有什么办法吗?为了使设置可见,我们需要访问它..我们不只是知道该怎么做? 见编辑。但我不确定你的工作目标。您是否尝试在 menuBar 中动态显示 QActions? 不..我只是想在运行时从菜单项中隐藏动作的名称..“actiontest”在您编辑的部分中表示 wat?。 “我的目​​标是在运行时从菜单项中隐藏默认操作名称”【参考方案2】:

我知道你的意思......你想隐藏默认上下文菜单“操作”......

您可以在设计部分(而不是在代码中)执行此操作。

然后你会在右侧看到你的对象堆栈

主窗口 QMainWindow centralWidget QWidget webView QWebView

现在转到下面的属性编辑器...搜索“contextMenuPolicy”,如有必要,将每个组件的“DefaultContextMenu”更改为“NoContextMenu”。

【讨论】:

【参考方案3】:

为了删除带有“操作”标签的默认上下文菜单,可以使用以下代码:

// Remove context menu from the all widgets.
QWidgetList widgets = QApplication::allWidgets();
QWidget* w=0;
foreach(w,widgets) 
    w->setContextMenuPolicy(Qt::NoContextMenu);

本质上,和乔尔的回答一样,但是代码版本:)

(代码取自QFriendFeed@forum.nokia.com 示例)

【讨论】:

以上是关于QT如何删除操作菜单项的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 中,如何使用 QSettings 来创建/修改/删除 Windows 注册表项/值?

Xamarin/SQLite/C# - 如何使用菜单项删除从列表视图和 SQLite 表中删除一行

excel表格如何统一删除一串数字前面相同数字

如何创建qt图标

如何隐藏 Qt 小部件应用程序菜单栏?

使用 ResideMenu lib 时删除菜单项