QT笔记- Qt添加右键菜单

函数

所有派生自QWidget的控件,若实现在其上右键单击弹出菜单,需要设置该控件的上下文菜单策略函数为setContextMenuPolicy(Qt::CustomContextMenu),设置该策略后当用户右键点击控件时qt会发送一个信号customContextMenuRequested() ,给这个信号设置相应的槽函数,在槽函数中将菜单展示出来就行了。

涉及相关函数其原型如下:

  1. void QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy policy)
  2. void QWidget::customContextMenuRequested(const QPoint & pos)

释义

  1. 若要让控件支持右键菜单,必须设置此函数。参数中枚举类型ContextMenuPolicy用来设置与显示菜单相关的策略,其中枚举项ContextMenuPolicy::CustomContextMenu表示右键点击控件时qt会发出一个信号,该信号为customContextMenuRequested() 。
  2. 是一个信号函数,在右键点击控件时由qt自动发出。注意必须设置策略为setContextMenuPolicy(Qt::CustomContextMenu)才行。

示例

对需要支持右键弹出菜单的控件做如下设置:

setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, &ProjectTreeView::customContextMenuRequested, this, &ProjectTreeView::open_menu);

open_menu即为自定义小部件类ProjectTreeView中创建的槽函数,该槽函数的实现为:

#include "QMenu"
void ProjectTreeView::open_menu(const QPoint & pos)
{
    QMenu menu;
    menu.addAction("aaa");
    menu.addAction("bbb");
    menu.addAction("ccc");
    menu.exec(QCursor::pos());//以阻塞方式显示菜单,参数可指示菜单显示位置,另外该函数可返回单击选中项
}

运行后,在小部件上右键单击后截图为:

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值