Я не могу говорить за Python, но это довольно легко в C ++.
сначала после создания виджета вы устанавливаете политику:
w->setContextMenuPolicy(Qt::CustomContextMenu);
затем вы подключаете событие контекстного меню к слоту:
connect(w, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(ctxMenu(const QPoint &)));
Наконец, вы реализуете слот:
void A::ctxMenu(const QPoint &pos) {
QMenu *menu = new QMenu;
menu->addAction(tr("Test Item"), this, SLOT(test_slot()));
menu->exec(w->mapToGlobal(pos));
}
это то, как вы делаете это в c ++, не должно сильно отличаться в API Python.
РЕДАКТИРОВАТЬ: после просмотра в Google, вот часть настройки моего примера на python:
self.w = QWhatever();
self.w.setContextMenuPolicy(Qt.CustomContextMenu)
self.connect(self.w,SIGNAL('customContextMenuRequested(QPoint)'), self.ctxMenu)