广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Qt实现右击菜单项
  • 524
分享到

Qt实现右击菜单项

Qt右击菜单项Qt右击菜单Qt菜单项 2022-11-13 14:11:21 524人浏览 安东尼
摘要

本文实例为大家分享了Qt实现右击菜单项的具体代码,供大家参考,具体内容如下 有两种方法: 自定义槽函数接受信号使用鼠标事件监听 一、前言 这里我用的是QTextEdit来实现右键功能

本文实例为大家分享了Qt实现右击菜单项的具体代码,供大家参考,具体内容如下

有两种方法:

  • 自定义槽函数接受信号
  • 使用鼠标事件监听

一、前言

这里我用的是QTextEdit来实现右键功能,假设我们的预期功能是:复制、粘贴、保存、关闭四个功能。

但是,我们在直接运行Qt后,发现右键已经有默认功能了,如图:

如果有ui项目的话,进入ui的QTextEdit组件,找到contextMenuPolicy发现已经设置为DefaultContextMenu。到此应该知道,Qt默认为我们创好了默认菜单。

查看Qt文档可以证明我们的猜测是正确的。

Qt文档中解释了,默认属性是Qt::DefaultContextMenu,并且还有Qt::NoContextMenuQt::PreventContextMenuQt::ActionsContextMenuQt::CustomContextMenu。并且使用Qt::CustomContextMenu时,会发射一个customContextMenuRequested()信号。

这么一来,就很清晰了。

二、自定义槽函数接受信号

从上文可知,我们要想使用自定义方法。需要将属性值改了,如果我们在QTextEdit中修改属性,则

edit->setContextMenuPolicy(Qt::CustomContextMenu);

这样一来,右键就不会出现默认选项了。

并对QTextEdit连接了自定义槽函数,名称自定

connect(edit,&QTextEdit::customContextMenuRequested,this,&Widget::ShowMenu);

这样准备工作就完成了。

槽函数中我们需要创建一个菜单,并且添加选择,这里使用QAction

再将QAction的成员连接个自功能,这样就实现了基础的菜单功能。

显示的位置在光标位置处,所以使用QCursor::pos()即可。

具体功能在槽函数里添加就行了。

void Widget::ShowMenu()
{
    QMenu *menu = new QMenu(this);
    QStringList list;
    list << "copy" << "paste" << "save" << "close";
    QList<QAction *> actList;
    for(int i = 0; i < list.count(); i ++)
        actList.append(new QAction(list.at(i)));
    connect(actList.at(0),&QAction::triggered,this,&Widget::CopyAction);
    connect(actList.at(1),&QAction::triggered,this,&Widget::PasteAction);
    connect(actList.at(2),&QAction::triggered,this,&Widget::SaveAction);
    connect(actList.at(3),&QAction::triggered,this,&Widget::CloseAction);

    menu->addActions(actList);
    menu->exec(QCursor::pos());
}

三、使用鼠标监听

重写

void mousePressEvent(QMouseEvent *event) override;

函数

需要判断鼠标点击事件是否是右击,如果不,则直接返回,如果是,执行和方法一一样的思路。

void Widget::mousePressEvent(QMouseEvent *event)
{
    if(event->button() != Qt::RightButton)
        return;

    QMenu *menu = new QMenu(this);
    QStringList list;
    list << "copy" << "paste" << "save" << "close";
    QList<QAction *> actList;
    for(int i = 0; i < list.count(); i ++)
        actList.append(new QAction(list.at(i)));
    connect(actList.at(0),&QAction::triggered,this,&Widget::CopyAction);
    connect(actList.at(1),&QAction::triggered,this,&Widget::PasteAction);
    connect(actList.at(2),&QAction::triggered,this,&Widget::SaveAction);
    connect(actList.at(3),&QAction::triggered,this,&Widget::CloseAction);

    menu->addActions(actList);
    menu->exec(QCursor::pos());
}

四、两分法对比

方法一针对的是某个组件实现的菜单功能。比如我对界面中的edit1组件使用了edit->setContextMenuPolicy(Qt::CustomContextMenu);,那么edit1就可以实现自定义功能。而edit2edit3则没有。

方法二是监听鼠标事件,只要是右击就出现菜单,对程序整个窗口内都有效,包括空白区域。

两个方法实现的思路都是大同小异,在使用时看情况而分配吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Qt实现右击菜单项

本文链接: https://www.lsjlt.com/news/172168.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Qt实现右击菜单项
    本文实例为大家分享了Qt实现右击菜单项的具体代码,供大家参考,具体内容如下 有两种方法: 自定义槽函数接受信号使用鼠标事件监听 一、前言 这里我用的是QTextEdit来实现右键功能...
    99+
    2022-11-13
    Qt右击菜单项 Qt右击菜单 Qt菜单项
  • jquery实现div右击菜单
    现代化的Web应用程序需要提供更加友好的用户界面,以便吸引更多的用户并增强用户体验。在Web开发领域,经常需要添加右键菜单功能以便用户可以通过右键点击查看更多选项。本篇文章将介绍如何使用jQuery实现一个简单的右击菜单。HTML结构首先,...
    99+
    2023-05-19
  • git安装完后右击菜单没有选项
    Git是一款非常优秀的版本控制工具,它可以帮助程序员更好地管理自己的代码,并且在团队协作中发挥重要作用。然而,有些用户在安装Git后会遇到右击菜单没有选项的问题,这个问题可能会导致用户不能方便地使用Git进行代码操作。本篇文章将介绍Git右...
    99+
    2023-10-22
  • Vue实现自定义右击删除菜单的示例
    目录一、定义和使用二、语法三、使用细节四、案例4.1 自定义右击删除菜单步骤4.2 技术点4.3 html代码4.4 CSS样式4.5 基础数据4.6 模拟数据4.7 添加日期列4....
    99+
    2023-02-02
    Vue 右击删除菜单 Vue 自定义右击删除
  • vue实现右键菜单栏
    本文实例为大家分享了vue实现右键菜单栏的具体代码,供大家参考,具体内容如下 vue实现右键菜单栏和原生js大同小异,都是需要明白两个点 1.contextmenu事件是鼠标的右键点...
    99+
    2022-11-13
  • Win8系统开始菜单轻轻右击出现
      相信大部分用户对Windows 8的全新界面感到困惑,特别是对我们曾经非常熟悉的开始菜单界面。这导致了大部分的消费者对Windows 8望而却步。而各大媒体则纷纷挖掘消费者可能不知道的隐藏功能。近日,t...
    99+
    2022-06-04
    右击 开始菜单 系统
  • Android实现选项菜单子菜单
    Android之选项菜单和子菜单学习笔记,供大家参考,具体内容如下 菜单简介: 菜单在桌面应用中使用十分广泛,几乎所有的桌面应用都有菜单。但是随着手机的发展,对于手机桌面菜单的...
    99+
    2022-06-06
    菜单 Android
  • vue实现右键弹出菜单
    在最近工作中,有一个需求,需要做一个表格,并且对该表格右键弹出菜单支持增删改,这里做下总结,功能截图如下: 首先定义菜单结构 <!-- 菜单 --> <div c...
    99+
    2022-11-13
  • Vue如何实现右键菜单
    小编给大家分享一下Vue如何实现右键菜单,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!效果图安装npm install vue-contextmenujs或yarn add vue-...
    99+
    2023-06-25
  • css如何实现点击菜单向右展开显示内容
    这篇文章主要为大家展示了css如何实现点击菜单向右展开显示内容,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“css如何实现点击菜单向右展开显示内容”这篇文章吧。 ...
    99+
    2022-10-19
  • html如何实现左右菜单左右互换
    这篇文章将为大家详细讲解有关html如何实现左右菜单左右互换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。<meta charset="UTF-...
    99+
    2022-10-19
  • 如何在Windows 11的右键单击菜单中默认“显示更多选项”
    我们用户从来不想要的最烦人的更改之一是在右键单击上下文菜单中包含“显示更多选项”。但是,您可以删除它并取回 Windows 11 中的经典上下文菜单。不再需要多次单击并在上下文菜单中查找这些ZIP快捷方式。按照本指南返回Windows 11...
    99+
    2023-07-10
  • vue怎么实现右键菜单栏
    本篇内容主要讲解“vue怎么实现右键菜单栏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue怎么实现右键菜单栏”吧!vue实现右键菜单栏和原生js大同小异,都是需要明白两个点contextme...
    99+
    2023-06-29
  • 1分钟Vue实现右键菜单
    目录效果图安装 代码实现 自定义样式 总结 高效实现需求,避免重复造轮子。今天给大家分享的是,如何在最短的时候内实现右键菜单。方法也很简单,一个插件就可以搞定,话不多说,上效果图: ...
    99+
    2022-11-12
  • js实现右键菜单栏功能
    本文实例为大家分享了js实现右键菜单栏的具体代码,供大家参考,具体内容如下 1. 效果图: 鼠标悬浮: 2. 代码 (1)html <div class="leftDiv"...
    99+
    2022-11-13
  • JS实现自定义鼠标右击菜单的代码怎么写
    这篇“JS实现自定义鼠标右击菜单的代码怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2022-10-19
  • C/C++ Qt 给ListWidget组件增加右键菜单功能
    在上一篇博文《C/C++ Qt ListWidget 列表框组件应用》中介绍了ListWidget组件的基本使用技巧,本次将给ListWidget组件增加一个右键菜单,当用户在Lis...
    99+
    2022-11-12
  • Android怎么实现菜单左右滑动
    在Android中,实现菜单左右滑动可以通过使用ViewPager和Fragment来实现。下面是实现的步骤:1. 在布局文件中,添...
    99+
    2023-09-28
    Android
  • Vue el-table实现右键菜单功能
    本文实例为大家分享了Vue el-table实现右键菜单功能的具体代码,供大家参考,具体内容如下 实现的效果如下: 1.el-table和右键菜单视图代码 @row-context...
    99+
    2022-11-13
  • Vue自定义指令实现点击右键弹出菜单示例详解
    目录一、实现思路1.使用contextmenu事件2.点击菜单之外的任意地方关闭菜单3.菜单置于图层的最顶层二、源代码一、实现思路 1.使用contextmenu事件 该需求需要拦截...
    99+
    2023-01-11
    Vue自定义指令右键弹出菜单 Vue自定义指令 点击右键弹出菜单
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作