2010-05-19 4 views
7

Я пытаюсь добавить контекстное меню (контекстное меню) в Qt QListView. Я вижу в Qt 3.3 есть «contextMenuRequested» (который я мог бы использовать) - http://doc.qt.digia.com/3.3/qlistview.html#contextMenuRequested. Тем не менее, я не вижу такого метода в Qt4. Кто-нибудь знает, как добавить контекстное меню в QListView?Qt QListView - контекстные меню?

ответ

2

Я не знаю, почему сигнал был удален, но он по-прежнему QWidget, так что вы всегда можете переопределить

void QWidget::contextMenuEvent (QContextMenuEvent*); 

или

void QWidget::customContextMenuRequested(const QPoint& pos); 

в зависимости от настройки политики Контекстное меню для виджета ,

+2

customContextMenuRequested() представляет собой сигнал, а не переопределение функции –

6

Я не знаю, что вы пытаетесь сделать, но вы можете легко добавить в контекстное меню любого виджета, вызвав QWidget::AddAction(QAction*) с действиями, которые вы хотите добавить в свой контекстное меню и настройки политики контекстного меню

widget->setContextMenuPolicy(Qt::ActionsContextMenu); 

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

16

в зависимости от того, как вы настроили ContextMenuPolicy в QWidget у вас есть несколько опции.

Если вы установили его на Qt::DefaultContextMenu, тогда просто переопределите защищенную функцию contextMenuEvent(QContextMenuEvent*) в QWidget. Я считаю, что это значение по умолчанию.

Если вы установили его на Qt::ActionsContextMenu, просто добавьте все свои действия в свой виджет и дайте дескриптору системы Qt контекстное меню.

Или, если вы установили его на Qt::CustomContextMenu, вам необходимо подключиться к сигналу customContextMenuRequested() и реализовать собственный обработчик контекстного меню.

Все это задокументировано в документации ContextMenuPolicy, доступной в Интернете.

+0

Обновленные ссылки на описание ContextMenuPolicy: [qt5] (http://doc.qt.io/qt-5/qwidget.html#contextMenuPolicy-prop) и [Qt4] (http://doc.qt.io/qt-4.8/qwidget.html#contextMenuPolicy-prop) – avtomaton