需求
在Widge部件t的某个位置上点击右键,弹出上下文菜单。
实现方式
重写 void QWidget::contextMenuEvent(QContextMenuEvent *event)虚函数,
void Widget::contextMenuEvent(QContextMenuEvent *event)
{
QMenu menu(this);
menu.addAction(QStringLiteral("删除"));
menu.addAction(QStringLiteral("属性"));
menu.exec(this->mapToGlobal(event->pos()));
}
总结
为什么要mapToGlobal函数,是因为event->pos()获取到的坐标是相对于当前窗口的坐标,QMenu是Window,显示时坐标相对于屏幕,故需要将event->pos()转换为全局坐标,即相对于屏幕坐标。