2010-05-19 42 views

Trả lời

2

Tôi không biết lý do tại sao các tín hiệu đã được gỡ bỏ, nhưng nó vẫn là một QWidget vì vậy bạn luôn có thể ghi đè

void QWidget::contextMenuEvent (QContextMenuEvent*); 

hoặc

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

tùy thuộc vào thiết lập chính sách menu ngữ cảnh của bạn cho widget .

+2

customContextMenuRequested() là một tín hiệu, không phải là một chức năng overridable –

6

Tôi không biết những gì bạn đang cố gắng để thực hiện nhưng bạn có thể dễ dàng thêm một menu ngữ cảnh để bất kỳ phụ tùng bằng cách gọi QWidget::AddAction(QAction*) với các hành động mà bạn muốn thêm vào menu ngữ cảnh của bạn và thiết lập các chính sách menu ngữ cảnh

widget->setContextMenuPolicy(Qt::ActionsContextMenu); 

widget sẽ chuẩn bị và hiển thị các menu ngữ cảnh, tất cả các bạn cần làm là treo lên những hành động triggered() tín hiệu đến các trình xử lý thích hợp

16

Tùy thuộc vào cách bạn đã thiết lập các ContextMenuPolicy trong QWidget bạn có một vài tùy chọn.

Nếu bạn đã đặt thành Qt::DefaultContextMenu thì chỉ cần ghi đè chức năng được bảo vệ contextMenuEvent(QContextMenuEvent*) trong QWidget. Tôi tin rằng đây là mặc định.

Nếu bạn đã đặt nó thành Qt::ActionsContextMenu thì chỉ cần thêm tất cả các hành động của bạn vào tiện ích con và để hệ thống xử lý Qt hiển thị menu ngữ cảnh.

Hoặc nếu bạn đã đặt thành Qt::CustomContextMenu, bạn cần kết nối với tín hiệu customContextMenuRequested() và triển khai trình xử lý menu ngữ cảnh của riêng bạn.

Đây là tất cả tài liệu trong tài liệu ContextMenuPolicy có sẵn trực tuyến.

+0

liên kết Cập nhật mô tả ContextMenuPolicy: [qt5] (http://doc.qt.io/qt-5/qwidget.html#contextMenuPolicy-prop) và [qt4] (http://doc.qt.io/qt-4.8/qwidget.html#contextMenuPolicy-prop) – avtomaton

Các vấn đề liên quan