Qt 右键自定义菜单的实现

右键菜单的实现

  • setContextMenuPolicy(Qt::CustomContextMenu) :负责授权(打开自定义右键菜单的机制开关)
  • &QListWidget::customContextMenuRequested :负责通知与传参 (右键按下时,把相对坐标 pos 发送出来)
  • itemAt(pos) + mapToGlobal(pos) :负责定位与呈现(相对坐标找数据,绝对坐标弹菜单)

setContextMenuPolicy()

说明

  • 说明:QWidget 提供的接口
  • 作用:告诉 Qt 当用户在当前控件上触发右键菜单(或按下菜单键)时,应该采用哪套策略来响应

策略

  • Qt::DefaultContextMenu(默认值)

    • 控件使用自己默认的右键菜单(比如 QLineEdit 默认弹出撤销、复制、粘贴)。

    • 需要重写虚函数 contextMenuEvent(QContextMenuEvent *event) 才能自定义菜单。

  • Qt::CustomContextMenu(当前使用的策略)

    • 完全交出控制权:控件放弃默认行为,改由开发者自定义。
    • 激活信号机制 :只有设为该策略,Qt 内部捕获到右键点击时,才会主动发射 customContextMenuRequested 信号。
  • Qt::NoContextMenu

    • 禁用右键菜单,用户怎么点右键都没反应。
  • Qt::ActionsContextMenu

    • QWidget::addAction() 添加的所有 QAction 自动组合成右键菜单弹出(适合极其简单的菜单)。

&QListWidget::customContextMenuRequested

说明

  • 说明:QWidget 继承给所有子控件(包括 QListWidget)的原生信号(Signal)
  • 触发条件:当控件策略为 Qt::CustomContextMenu,且用户在控件区域内按下右键(或触发右键菜单快捷键)时
  • 参数传递 (const QPoint &pos) :信号在发射时,会携带一个类型为 QPoint 的参数 pos
  • 注意pos相对坐标 (Local Coordinates),即鼠标点击位置相对于控件左上角((0,0))的像素坐标,而不是整个电脑屏幕的坐标。
相关推荐
张小姐的猫1 小时前
【AI大模型接入SDK】 —— Gemini接入封装
android·数据结构·数据库·c++·人工智能·python
CoderYanger1 小时前
前端基础——JavaScript(WebAPI)(下篇)
java·开发语言·前端·javascript·程序人生·面试·职场和发展
一木 之林2 小时前
七、一-AI 工程实践、插件化调试与软件交付
java·linux·c++
小木_.2 小时前
Python 离线识别滑块缺口距离,项目推荐
开发语言·python·滑块识别·人机验证·滑块缺口·缺口识别
liliangcsdn3 小时前
因子权重矩阵处理-因子权重收缩Shrinkage算法的探索
开发语言·python·机器学习
Murphy_lx3 小时前
1124. 表现良好的最长时间段
c++·算法
aramae3 小时前
模拟实现strstr函数(C语言)
c语言·开发语言·算法
liliangcsdn3 小时前
因子权重矩阵处理-滞回缓冲带+降频稳定化动态重选
开发语言·python·算法
ShuiShenHuoLe4 小时前
golang-jwt v5 入门
开发语言·后端·golang