QT Как удалить пункт меню действий - PullRequest
3 голосов
/ 09 марта 2010

когда я добавляю виджет в главное окно, по умолчанию будет присутствовать пункт меню действий, как это убрать?

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 ]

2 голосов
/ 17 мая 2010

Я знаю, что вы имеете в виду ... вы хотите скрыть контекстное меню по умолчанию "Действия" ....

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

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

  • MainWindow QMainWindow
    • centralWidget QWidget
      • webView QWebView

Теперь перейдите в редактор свойств ниже ... найдите «contextMenuPolicy» и измените его с «DefaultContextMenu» на «NoContextMenu» для каждого компонента, если это необходимо.

2 голосов
/ 20 ноября 2010

Чтобы удалить контекстное меню по умолчанию с меткой «Действия», можно использовать следующий код:

// 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)

2 голосов
/ 09 марта 2010

Если вы хотите скрыть QAction и отобразить его, когда вам это нужно, вы можете использовать функцию setVisible .

Если вы хотите удалить строку меню из QMainWindow, вы можете использовать препроцессор QT_NO_MENUBAR, чтобы удалить все случаи использования QMenuBar. Если вы не используете средства, предоставляемые QMainWindow, возможно, вы можете использовать простой QWidget в качестве основного окна в вашем приложении.

[Изменить] Если вы хотите скрыть QActions во время выполнения, вы найдете их в качестве члена пользовательского интерфейса QMainWindow. Например, если у вас есть QAction с именем actionTest, вы получите к нему следующий доступ: this->ui->actionTest->setVisible(false);

...