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 );
в зависимости от настроек политики контекстного меню для виджета.