QT如何删除操作菜单项

时间:2010-03-09 07:19:09

标签: qt qt4 menu symbian contextmenu

当我将小部件添加到主窗口时,默认情况下将显示操作菜单项, 如何删除?

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()));

由于

3 个答案:

答案 0 :(得分:2)

如果您想隐藏QAction并在需要时显示它,可以使用setVisible功能。

如果要从QMainWindow中删除菜单栏,可以使用QT_NO_MENUBAR预处理器删除QMenuBar的所有用途。如果您没有使用QMainWindow提供的工具,也许您可​​以在应用程序中使用简单的QWidget作为主窗口。

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

答案 1 :(得分:2)

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

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

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

  • MainWindow QMainWindow
    • centralWidget QWidget
      • webView QWebView

现在转到下面的属性编辑器...搜索“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样本)