tôi không thể nói cho trăn, nhưng nó khá dễ dàng trong C++.
đầu tiên sau khi tạo widget bạn thiết lập chính sách:
w->setContextMenuPolicy(Qt::CustomContextMenu);
sau đó bạn kết nối các sự kiện menu ngữ cảnh để một khe cắm:
connect(w, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(ctxMenu(const QPoint &)));
Cuối cùng, bạn thực hiện các khe:
void A::ctxMenu(const QPoint &pos) {
QMenu *menu = new QMenu;
menu->addAction(tr("Test Item"), this, SLOT(test_slot()));
menu->exec(w->mapToGlobal(pos));
}
đó là cách bạn làm điều đó trong C++, không nên quá khác biệt trong API python.
EDIT: sau khi nhìn xung quanh trên google, đây là phần thiết lập của ví dụ của tôi trong python:
self.w = QWhatever();
self.w.setContextMenuPolicy(Qt.CustomContextMenu)
self.connect(self.w,SIGNAL('customContextMenuRequested(QPoint)'), self.ctxMenu)
Nguồn
2009-04-23 16:14:44
lưu ý rằng trong PyQt4, CustomContextMenu vị trí trong gói là ở đây: PyQt4.QtCore.Qt.CustomContextMenu –
Gotta love downvote ngẫu nhiên sau hai năm và 19 upvotes :-P –
Các downvote là tình cờ và tôi m thực sự thực sự xin lỗi. Câu trả lời thực sự đã giúp tôi rất nhiều. –