Qt自定义textBrowser的右键菜单栏

问题描述

  我们利用代码直接生成MainWindow下的右键菜单栏(如何生成右键菜单?),但是发现由于textBrowser控件定义了自有默认右键菜单,因此我们自定义的右键菜单失效。如下图:

解决办法

   QWidget及其子类都可有右键菜单,首先设置QWidget与右键菜单有关的函数setContextMenuPolicy(),属性对应项为contextmenuPolicy。setContextMenuPolicy函数的参数为枚举类型Qt::ContextMenuPolicy,qt帮助文档中有相应介绍:

  接着我们进入UI编辑界面,点击需要设置的textBrowser,其右侧属性栏中找到该参数,观察到该参数默认为DefaultContextMenu,如下图:

  该值表示在未重写右键响应时,按照默认值输出,这也是显示默认菜单的原因。为避免复杂的重写,且全局只需要一个右键菜单栏的情况下,我们修改该指定控件该参数为ActionsContextMenu,菜单只需正常创建即可,不需要对函数进行重写。同时,为保证在其他非指定位置不出现该右键菜单,将其他控件该参数设置为PreventContextMenu即可。
  最终得到正常的自定义右键菜单,如下图:

一些关于右键菜单重写的文章

Qt学习之给QPushButton添加菜单ActionsContextMenu方法
(四)Qt之右键菜单
Qt实现右键菜单的五种方法!(以QListWidget为例)
qt 右键菜单事件

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D-A-X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值