Qt自定义textBrowser的右键菜单栏

问题描述

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

解决办法

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/m0_46161993/article/details/108490339
今日推荐