给QListWidget添加右键支持,点右键时弹出快捷菜单。 (又称:上下文菜单)
步骤:
(1)设置菜单策略
setContextMenuPolicy(Qt::CustomContextMenu);
(2) 关联信号customContextMenuRequested()
在QWidget基类中有这个signal
(3) 事件处理(slot): 构造菜单、显示
(4) 菜单响应(action)
菜单的构造:
构造一个QMenu对象即可,
QMenu menu;
menu.addAction(ui.actionAdd);
menu.addAction(ui.actionRemove);
菜单的显示:
QPoint pt_global = ui.listWidget->mapToGlobal(pt) ;
menu.exec(pt_global);
要把这个QPoint转换到全局坐标(屏幕坐标)
菜单的上下文:
在构造快捷菜单时,应该根据鼠标点击的位置(上下文)来定制不同的菜单。
在本例中,如果鼠标点中了一个现有项,则显示“删除”菜单。如果鼠标点中的是空白,则没有“删除”菜单。
test.h:
1 | #ifndef TEST_H |
test.c:
1 | #include "test.h" |
main.c:
1 | #include "test.h" |
实现情况: