Qt QListView - контекстные меню?

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

3 ответа

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

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

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

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

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

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

widget->setContextMenuPolicy(Qt::ActionsContextMenu);

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

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

void QWidget::contextMenuEvent ( QContextMenuEvent* );

или же

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

в зависимости от настроек политики контекстного меню для виджета.

Другие вопросы по тегам