当我将小部件添加到主窗口时,默认情况下将显示操作菜单项, 如何删除?
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()));
由于
答案 0 :(得分:2)
如果您想隐藏QAction并在需要时显示它,可以使用setVisible功能。
如果要从QMainWindow中删除菜单栏,可以使用QT_NO_MENUBAR预处理器删除QMenuBar的所有用途。如果您没有使用QMainWindow提供的工具,也许您可以在应用程序中使用简单的QWidget作为主窗口。
[编辑]
如果您想在运行时隐藏QActions,您会发现它们是QMainWindow UI的成员。例如,如果您有一个名为actionTest的QAction,您将按以下方式访问它:this->ui->actionTest->setVisible(false);
答案 1 :(得分:2)
我知道你的意思......你想隐藏默认的上下文菜单“行动”....
您可以在“设计”部分(而不是代码中)执行此操作。
然后你会在右侧看到你的对象堆栈,如
现在转到下面的属性编辑器...搜索“contextMenuPolicy”并在必要时为每个组件将其从“DefaultContextMenu”更改为“NoContextMenu”。
答案 2 :(得分:2)
为了删除标签为“Actions”的默认上下文菜单,可以使用以下代码:
// Remove context menu from the all widgets.
QWidgetList widgets = QApplication::allWidgets();
QWidget* w=0;
foreach(w,widgets) {
w->setContextMenuPolicy(Qt::NoContextMenu);
}
基本上,与Joel的答案相同,但代码版本:)
(代码来自forum.nokia.com的QFriendFeed样本)