Qt中的上下文菜单 ContexMenu

Qt上下文菜单 在Qt中,上下文菜单(Context Menu)是一种弹出式的、与用户当前鼠标位置相关的菜单,它通常用于提供针对特定元素的快速操作选项,比如右键点击某个控件时会出现的菜单。是一个枚举类型,用于设置如何处理和显示上下文菜单。当你在Qt中创建一个窗口或控件时,可以设置其。当用户右键点击时,会触发。属性来控制何时显示上下文菜单。策略,这意味着应用程序需要通过。方法将菜单显示在指定的位置。在这个例子中,我们设置了。 阅读详情

Qt中的上下文菜单 ContexMenu

2018-02-26 23:19:46 SallenKey 阅读数 549更多

分类专栏: Qt笔记 Qt笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.youkuaiyun.com/xiaoyink/article/details/79382920

Qt实现上下文菜单

 

一、重载contextMenuEvent()事件处理函数,在重载的contextMenuEvent函数中显示QMenu对象:

widget.h文件

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
 
class QMenu;
class QAction;
 
namespace Ui {
class Widget;
}
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
protected:
    void contextMenuEvent(QContextMenuEvent *event);
 
private:
    Ui::Widget *ui;
    QMenu * menu;
    QAction * openAction;
    QAction * saveAsAction;
};
 
#endif // WIDGET_H
 

 

widget.cpp文件

 
  1. #include "widget.h"

  2. #include "ui_widget.h"

  3. #include <QMenu>

  4. #include <QAction>

  5. #include <QContextMenuEvent>

  6.  
  7. Widget::Widget(QWidget *parent) :

  8. QWidget(parent),

  9. ui(new Ui::Widget),

  10. menu(new QMenu(this)),

  11. openAction(new QAction(QStringLiteral("打开"), this)),

  12. saveAsAction(new QAction(QStringLiteral("另存为"), this))

  13. {

  14. ui->setupUi(this);

  15. menu->addAction(openAction);

  16. menu->addAction(saveAsAction);

  17. }

  18.  
  19. Widget::~Widget()

  20. {

  21. delete ui;

  22. }

  23. void Widget::contextMenuEvent(QContextMenuEvent *event)

  24. {

  25. //显示菜单到鼠标右击即event发生的坐标处,这两种写法都行,最终都是用全局坐标

  26. //this->menu->exec(this->mapToGlobal(event->pos()));

  27. this->menu->exec(event->globalPos());

  28. }

二、添加QAction对象到父窗口,即要设置上下文菜单的窗口,然后设置父窗口属性为Qt::ActionsContextMenu:

只需将Widget类的构造函数做如下更改,并去掉对contextMenuEvent函数的重载:

 
  1. Widget::Widget(QWidget *parent) :

  2. QWidget(parent),

  3. ui(new Ui::Widget),

  4. menu(new QMenu(this)),

  5. openAction(new QAction(QStringLiteral("打开"), this)),

  6. saveAsAction(new QAction(QStringLiteral("另存为"), this))

  7. {

  8. ui->setupUi(this);

  9. //menu->addAction(openAction);

  10. //menu->addAction(saveAsAction);

  11. this->addAction(openAction);

  12. this->addAction(saveAsAction);

  13. this->setContextMenuPolicy(Qt::ActionsContextMenu);

  14. }

 

 
Qt contextMenu的创建和使用 Qt中的部件的弹出菜单(ContextMenu),依据ContextMenuPolicy的值的不同,有四种形式: 一、默认菜单 此时,ContextMenuPolicy的值为Qt::DefaultContextMenu,这是默认值,其将显示部件定义的默认菜单 二、无菜单 此时,ContextMenuPolicy的值为Qt::NoContextMenu 三、由Action定义菜单 此时,Cont 阅读详情

相关推荐

Qt上下文菜单(右键菜单)的几种方式,setContextMenuPolicy(Qt::ContextMenuPolicy policy)函数5个参数的用法

设置右健菜单的方法原型:void setContextMenuPolicy(Qt::ContextMenuPolicy policy),参数有5个枚举值,说明如下: 序号 值 说明 1 Qt::NoContextMenu 小部件没有上下文菜单,上下文菜单的处理被推迟到小部件的父级 2 Qt::PreventContextMenu 该小部件没有上下文菜单,与NoContextMenu相反,处理不会被推迟到小部件的父级。所有鼠标右键事件都保证通过void QAbstractItemView:

mabiao0825的博客 1万+

QWidget菜单策略:Qt::ContextMenuPolicy

1、Qt::NoContextMenu:小部件没有上下文菜单,上下文菜单处理被推迟到小部件的父级。 2、Qt::PreventContextMenu:小部件没有上下文菜单,与NoContextMenu相比,处理不会延迟到小部件的父级。这意味着所有鼠标右键事件都可以传递到小部件本身。 3、Qt::DefaultContextMenu:调用小部件的QWidget::contextMenuEvent()处理程序。 void Widget::contextMenuEvent(QContextMenuEven

友善啊,朋友的博客 4985

QContextMenuEvent 是 Qt 框架中的一个类,用于表示上下文菜单事件

上下文菜单事件(Context Menu Event)在用户右击部件时触发,通常用于显示上下文菜单。这些菜单可以包含与所选部件相关的操作和选项。获取鼠标右击的全局位置。最后,根据用户选择的菜单项进行相应的处理。类提供了获取上下文菜单事件的相关信息的功能。函数,以处理上下文菜单事件。在函数中,我们创建了一个。是 Qt 框架中的一个类,用于表示上下文菜单事件。类,并添加了一些额外的成员函数和属性。对象,并添加了两个菜单项。在上述示例中,我们重写了部件类的。函数显示菜单,并通过。

m0_46376834的博客 1893

【十六】【QT开发应用】Menu菜单,contextMenuEvent,setContextMenuPolicy,addAction

在 Qt 框架中,QMenu 类用于创建和管理菜单。菜单是用户界面的一部分,可以包含多个选项或动作,用户可以选择这些选项来执行特定的功能。菜单通常显示在菜单栏、上下文菜单(右键菜单)或工具栏中。基本用法添加动作:使用 addAction 方法将 QAction 对象添加到菜单中。QAction 代表菜单中的一个选项或动作。显示菜单:菜单可以在指定的位置显示,例如在鼠标光标位置。

m0_74163972的博客 1508

ThreeJS教程:地图案例(包围盒、正投影)

推荐:将加入你的3D工具链。

jianshi2023的博客 1007

手把手教你用LIO-SAM搞定激光雷达和IMU联合标定(附避坑指南)

本文详细介绍了使用LIO-SAM进行激光雷达与IMU联合标定的全流程,包括标定原理、工具选型、硬件配置、数据采集、LI_calib标定步骤及LIO-SAM集成验证。特别提供了避坑指南和参数优化技巧,帮助开发者高效完成传感器标定,提升自动驾驶和机器人定位精度。

hadoop5ranger的博客 994

QT右键菜单及位置捕捉问题

<br />QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数:<br />Qt::ContextMenuPolicy contextMenuPolicy () const<br />void setContextMenuPolicy ( Qt::ContextMenuPolicy policy )<br />Qt::ContextMenuPolicy枚举类型包括:<br />Qt::DefaultContextMenu, Qt::NoContextMenu, Qt::P

auragreen的专栏 1202

Ascend C 算子开发遇到的问题及解决方法

在学习Ascend C算子开发进阶课程的时候,进行Ascend C自定义算子工程、算子调用等实验,在开发环境中遇到了一些问题,在这里记录一下。首先如果在启智社区CANN版本为6.3 ,要进行Ascend C算子开发,需要更新CANN版本。

qq_45257495的博客 5106

Qt中右键菜单的生成方式:contextMenuEvent

实现protected contextMenuEvent函数 void MyItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {     QMenu menu;     QAction *moveAction = menu.addAction("move back");     QAction *actAction = m...

hongyd的博客 6735

【Transformer 相关理论深入理解】注意力机制、自注意力机制、多头注意力机制、位置编码

transformer原理

qq_38253797的博客 2万+

vue3+vite:引入tailwindcss不生效的原因,详细解决Tailwind配置没问题但就是不生效的情况,配置正确无报错但样式没有生效(包括tailwindcss在Vue2使用不生效解决方案)

vue3 tailwind使用教程以及tailwind不生效的问题,vue3+vite引入tailwindcss不生效的原因,tailwindcss配之后不生效怎么办,如何解决tailwinscss不生效的原因,Vue3项目使用tailwindcss在Vue2使用,不生效解决,如何解决使用 Tailwind CSS 后出现的样式不生效的问题?tailwindcss配之后不生效 tailwindcss不生效,为什么我的 Tailwind css 类没生效,解决使用 Tailwind 时样式不生效的问题,配置没

✅ 精选推荐文章 4126

QMenu:创建一个右键菜单

QMenu:创建一个右键菜单

xie__jin__cheng的博客 654

uniapp - 微信支付报错 requestPayment:fail:HBuilder mainifest.json中配置的支付appid和生成订单使用的appid不一致,如果是HB调试请在线打包

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,微信支付,报错,errMsg,requestPayment:fail:HBuildermainifest.json中配置的支付appid和生成订单使用的appid不一致,如果是HB调试请在线打包,http://ask.dcloud.net.cn/article/282,已经都检查了还是报错,如何解决这个问题,还是不行,错误,苹果微信支付报错,安卓app微信支付出错,打包,在线打包也不行,本地打包,支

🏆 前端领域优质创作者 3500

Qt学习—qt上下文菜单显示

Qt学习—qt上下文菜单显示   Qwidget类及其子类都具有右键菜单响应功能,QWidget类提供了以下两个与右键菜单有关的函数: 1、 Qt::ContextMenuPolicy contextMenuPolicy()const 该函数用来获取控件上下文菜单项的显示策略。其返回值Qt::ContextMenuPolicy是枚举类型。 2、 void setContextMenuPo

GDUTLYP的专栏 3941

使用 SAP 自家的 AI 工具 Joule 辅助 SAP Fiori 应用开发

SAP Joule 不请自答,解释说标记了接口的 UI Component,具备进行异步内容创建的能力,比如其通过 rootView 分配的视图,在运行时可以异步创建。目前 SAP Business Application Studio 里的 SAP Joule 支持下面这八种上下文,绝大部分都和 SAP UI5 开发相关,剩下的则是代码仓库和 SAP 帮助文档的搜索。SAP Joule 回答的大意是:我只负责回答 SAP UI5 开发相关的问题,不要和我扯其他有的没的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1093

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Qt的右键菜单及位置捕捉问题

这个是原文:http://hi.baidu.com/%B7%C9%CF%E8_%C6%D1%B9%AB%D3%A2/blog/item/802a999a8625debdc9eaf423.html2009年04月24日 星期五 21:18QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数:Qt::ContextMenuPolicy co

iotplan.com 物联网技术专栏 2386

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Qt ContextMenu

QTableWidget中设置右键点击事件:tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(tableWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(rightMouseClicked()));contextMenuPolicy: This p

me_badman的博客 875

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

qt右键菜单的两种方式----contextMenuEvent+customContextMenuRequested

来源:微信公众号「编程学习基地」 文章目录qt右键菜单 qt右键菜单 第一步 准备菜单 //定义菜单 QMenu *RightButtonMenu; //右键菜单 QAction *saveSreenShot; //保存到粘贴板 QAction *saveCopyAs; //另存为 QAction *quitSreenShot; //退出截图 初始化菜单 saveSreenShot = new QAction(tr("保存截图"), this); //connect(saveSreenSho..

deroy 6449

QT中实现上下文菜单

在许多的应用程序中,当我们右击时会弹出一个菜单,这个菜单就叫做“上下文菜单”,英文名称为“Context Menu”.在QT中有两种方式可以实现这种上下文菜单,一一列举如下:   一.重载contextMenuEvent()函数,一个简单的示例如下: void MainWindow::contextMenuEvent(QContextMenuEvent *event

ryanzz的专栏 1934

【QT开发笔记-基础篇】| 第四章 事件QEvent | 4.9 右键菜单事件

常用事件讲解 详解事件传递流程 小案例-无边框窗口

B站-大轮明王讲Qt 1973

Qt应用开发(基础篇)——菜单 QMenu

QMenu类继承于QWidget,它提供了一个菜单样式的小部件,用于菜单栏、上下文菜单和一些弹出式菜单。QMenu菜单的选项是可选的,它可以是一个下拉的菜单,也可以是独立的上下文菜单。下拉菜单通常作用于当用户单击相应的项目或按下指定的快捷键时,使用QMenuBar::addMenu()将菜单插入到菜单栏中,菜单栏将显示下拉菜单。上下文菜单通常通过一些特殊的键盘键或右键来调用。它们可以用popup()异步执行,也可以用exec()同步执行。当然菜单也可以在一些触发事件中调用,比如按下按钮时。QMenu。

波塞冬的博客 8887

29、Qt使用上下文菜单(右键菜单)

Qt中使用上下文菜单(右键菜单)的四种方式

Viciower的博客 1023

Qt事件之创建鼠标右击菜单【上下文菜单事件-----contextMenuEvent() 】

在窗口中古创建一个右击菜单步骤: 1. 重写上下文菜单事件–contextMenuEvent(QContextMenuEvent * event); void MyWidget::contextMenuEvent(QContextMenuEvent * event) { m_rightClieckMenu->exec(QCursor::pos()); //QCursor::pos()获取...

愤怒的狸猫 的博客 3082

删除右键PDF文件时出现的多余快捷键 - 右键管理软件推荐 - ‘‘ContextMenuManger’’

解决右键PDF文件时菜单巨长无比的问题,下载免费软禁ContextMenuManager,一键解决。

DrGuCoding的博客 6614
上一篇: 自定义继承自QSciScintilla的类,出现使用VS的MSVC编译器编译失败的问题
下一篇: 系统编译时间的获取
一杯橙咖
博客等级 码龄14年 81粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值