2010-03-09 63 views
3

當我添加小部件到主窗口時,默認動作菜單項會出現, 如何刪除那個?QT如何刪除動作菜單項

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

感謝

回答

2

如果你想隱藏的QAction並顯示它當你需要它,你可以使用setVisible功能。

如果您想從QMainWindow中刪除菜單欄,可以使用QT_NO_MENUBAR預處理器來刪除QMenuBar的所有用法。如果你沒有使用QMainWindow提供的工具,也許你可以在你的應用程序中使用一個簡單的QWidget作爲主窗口。

[編輯] 如果你想在運行時隱藏QActions,你會發現它們是QMainWindow UI的成員。例如,如果你有一個名爲actionTest的QAction,您將訪問它像:this->ui->actionTest->setVisible(false);

+0

好吧..如何獲取acces到qaction菜單項? 我將從菜單中獲取操作列表。如果我遍歷它不只給出操作菜單..那麼該怎麼辦? – Naruto

+1

你想要做什麼? –

+0

我想從菜單欄中刪除Qaction菜單..所以有什麼辦法嗎? 爲了使set-visible成爲可能,我們需要獲得它的訪問權限..我們不僅僅得到如何做? – Naruto

2

我知道你的意思......你要隱藏的默認的上下文菜單的「操作」 ....

你可以在設計部分(不是在代碼中)做到這一點。

然後你看到你的對象堆棧右側像

  • 主窗口QMainWindow的
    • centralWidget QWidget的
      • webView的QWebView

現在轉到下面的屬性編輯器...如果需要,搜索「contextMenuPolicy」並將其從「DefaultContextMenu」更改爲「NoContextMenu」。

2

爲了消除與標籤「操作」下面的代碼默認的上下文菜單可用於:

// 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的樣本)