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 注册表项/值?