2010-03-09 4 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. Например, если у вас есть QAction имени actionTest, вы будете обращаться к нему как что: this->ui->actionTest->setVisible(false);

+0

Хорошо, как получить доступ к пункту меню qaction? .. Я получаю список действий из меню. если я перебираю его, это не дает только меню действий .. так что делать? – Naruto

+1

Что вы хотите точно сделать? –

+0

Я хочу удалить меню Qaction из меню ... так или нет? для создания видимого набора мы должны получить доступ для него .. мы не получаем только, как это сделать? – Naruto

2

Я знаю, что вы имеете в виду ... вы хотите скрыть DEFAULT контекстного меню «Действия» ....

Вы может сделать это в разделе «Дизайн» (не в коде).

Затем вы видите свой объект-стек на правой стороне, как

  • MainWindow 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)

Смежные вопросы