2012-01-02 21 views
6

Tôi cần phải đặt một QPushButton bên trong một QMenu. Có thể và nếu có thì làm thế nào?Làm thế nào để đặt nút bấm bên trong điều khiển QMenu hoặc QAction?

tôi muốn đạt được một cái gì đó như thế này:

image

+0

bạn đang cố gắng làm gì đây? Một nút ấn bên trong một menu có vẻ giống như một phần tử giao diện người dùng rất lạ - nó hoạt động như thế nào? – Mat

+0

QAction mới sẽ được thêm vào QMenu sau khi nhấn nút. – liri2006

Trả lời

9

QWidgetAction là những gì bạn đang tìm kiếm. Đây là những gì là trên tài liệu qt

Lớp QWidgetAction kéo dài QAction bởi một giao diện cho chèn widget tùy chỉnh thành hành động container dựa

Vì vậy, về cơ bản nó mang lại một giao diện người dùng tùy chỉnh để QAction theo những gì QWidget bạn vượt qua cho nó. Tôi đã sử dụng QWidgetAction để hiển thị hộp kiểm dưới dạng các mục QMenu.

QCheckBox *chkBox = new QCheckBox(menu); 
chkBox ->setText("MyCheckBox"); 
QWidgetAction *chkBoxAction= new QWidgetAction(menu); 
chkBoxAction->setDefaultWidget(chkBox); 
menu->addAction(chkBoxAction); 

Sau đó, bạn có thể xử lý tín hiệu từ hộp kiểm tương ứng.

0

Nếu bạn chỉ muốn có một mục trình đơn để có một trạng thái, bạn có thể sử dụng tài sản Checkable của QAction:

rotateAct = new QAction(QIcon(":/images/Mouse/Rotate.png"), tr("&Rotate"), this); 
rotateAct->setCheckable(true); 
Các vấn đề liên quan