UI界面程序鼠标右键弹出菜单的一些事

这篇具有很好参考价值的文章主要介绍了UI界面程序鼠标右键弹出菜单的一些事。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概述

在做客户端UI程序时,鼠标右键弹出菜单这种操作非常常见,一般在鼠标右键按下或者鼠标右键抬起事件中响应操作,显示菜单即可,但是有时涉及到鼠标的移动,就是鼠标按下右键且移动时,则不需要弹出菜单,其它时候正常弹出。这种情况有很多种实现方式,但是操作体验上,差别较大,下面记录一种实现方案

2.实现方案

目标:实现流畅的鼠标右键弹出菜单操作,当鼠标右键按下且移动时,不弹出菜单

2.1 实现思路

开启一个定时器 timer(设置定时器触发超时200ms,设置定时器超时响应函数RightClickFun,函数中设置右键弹窗标识 boolFlag为false),在鼠标右键按下时启动定时器,并设置一个右键弹窗标识 boolFlag为true,在鼠标右键弹起时,如果右键弹窗标识 boolFlag为true则停止定时器并显示右键弹窗,否则不显示弹窗。大致意思就是如果鼠标右键按下超过200ms,则判定为其它操作,不弹窗,小于200ms则弹窗。

2.2 QT实现示例

此处以c++ QT做一个简单的示例,其它的UI界面库原理是一样的文章来源地址https://www.toymoban.com/news/detail-771295.html

Qtimer* m_rClickTimer=new QTimer(this);
m_rClickTimer->setSingleSlot(true);
connect(m_rClickTimer,SIGNAL(timeout()),this,SLOT(OnRightClick()));

//鼠标按键按下事件响应
void TestWidget::mousePressEvent(QMouseEvent *event)
{
    if(event->button == Qt::RightButton)
    {    
        m_rClickTimer->start(200);
        m_rFlag=true;
    }
}

//鼠标按键抬起事件响应
void TestWidget::mouseReleaseEvent(QMouseEvent *event)
{
    if(event->button == Qt::RightButton)
    {
         if(m_rFlag)
        {
             m_rightPopMenu->move(QCursor::pos);
             m_rightPopMenu->show();
        }   
    }
}

//定时器超时响应函数
void TestWidget::TestWidget()
{
    m_rFlag=false;
}

到了这里,关于UI界面程序鼠标右键弹出菜单的一些事的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MacBook IDEA 使用蓝牙外接鼠标 点击右键无法呼出菜单(右键点击无反应)

    使用最新版的IDEA(IntelliJ IDEA 2022.1.2 (Ultimate Edition)),并使用蓝牙连接外置鼠标,IDEA右键无法呼出菜单。只能偶尔呼出一次。绝大部分时间无法呼出。此时包括笔记本的鼠标触控板也无法在IDEA中呼出菜单。但是在其他软件都可以正常呼出菜单。只有在IDEA中会出现这个问题。

    2024年02月11日
    浏览(57)
  • windows系统如何将 CMD(命令提示符)添加到鼠标右键菜单

    您可以通过以下步骤将 CMD(命令提示符)添加到鼠标右键菜单: 1. 打开注册表编辑器。按下 `Win + R` 组合键,然后键入 `regedit` 并按下 Enter 键。 2. 导航到注册表路径:`HKEY_CLASSES_ROOTDirectoryBackgroundshell`    这将打开一个名为 \\\"shell\\\" 的键。 3. 在 \\\"shell\\\" 键下,右键单击,选择

    2024年02月03日
    浏览(88)
  • flutter聊天界面-聊天气泡长按弹出复制、删除按钮菜单

    flutter聊天界面-聊天气泡长按弹出复制、删除按钮菜单 在之前实现了flutter聊天界面的富文本展示内容,这里记录一下当长按聊天气泡的时候弹出复制、删除等菜单功能 当长按聊天气泡的时候弹出复制、删除等菜单,可新增更多按钮 实现箭头效果,这里实现自定义的CustomPai

    2024年02月13日
    浏览(44)
  • Android 13.0 framework中实现默认长按电源键弹出关机对话框功能

    在13.0的系统定制化开发中,在12.0的系统之前默认的都是长按电源键弹出关机对话框,而在13以后 就改成音量+电源键弹出对话框,由于使用不方便,所以就改成默认长按弹出关机对话框功能 PhoneWindowManager是供系统进程使用,是WindowManagerService 的一部分,WindowManagerService 会利用

    2024年02月11日
    浏览(63)
  • Element UI中el-tree 添加右键菜单的方法,附带问题和解决方案

    1、在el-tree 中添加方法 @node-contextmenu=\\\"rightClick\\\" 2、建立一个右键组件,可以使用 el-menu 组件,优点是,可以借助el-menu 的 selec方法进行增删改查以及样式不用手写了,弊端是不容易获取点击的Dom,先暂时这样写吧 3、methods中的写法 3、点击树状节点时,关闭右键组件 4、css样式

    2024年02月04日
    浏览(44)
  • 【程序员装机】在右键菜单中添加Notepad++选项

    本文将介绍如何通过批处理脚本来在Windows右键菜单中添加Notepad++选项,使您能够轻松使用Notepad++打开各种文件。 以下是一个用于在右键菜单中添加Notepad++选项的批处理脚本的示例。该脚本将创建相应的注册表项,以便在右键菜单中打开文件时能够选择使用Notepad++。 记得把路

    2024年02月09日
    浏览(41)
  • .NET桌面程序如何设置任务栏图标右键菜单中的名称

    右键任务栏中应用程序图标时会显示程序名称,例如: 这里显示的并不是程序文件名DingTalk,而是文件属性中详细信息选显卡下的“文件说明”。 在.NET桌面程序中,是通过修改程序集名称(AssemblyTitle)来设置该值,c++程序则是添加版本信息设置FileDescription属性。但是,这个

    2024年02月12日
    浏览(38)
  • python图形界面化编程GUI(三)事件绑定(鼠标和键盘、OptionMenu、scale、颜色、文件对话框、菜单和工具栏、ttk子模块)

    Tkinter类 名称 简介 Toplevel 顶层 容器类,可用于为其他组件提供单独的容器,类似于窗口 Button 按钮 代表按钮组件 Canvas 画布 提供绘图功能,包括直线、矩形、椭圆、多边形、位图等 Entry 单行输入框 用户可输入内容 Frame 容器 用于装载其他GUI组件 Label 标签 用于显示不可编辑

    2024年02月12日
    浏览(48)
  • WIN11右键菜单替换成WIN10右键菜单的办法

    想必很多人已经都是使用上Win11的系统了。今天就来解决一个让人很无语的问题,就是这个win11的右键菜单。真的是太太太难用了。 能一步完成的操作,非要需要我多走一步。真的是麻了。 亲爱的Windows 11右键菜单,你的设计真是令人头疼。 那么我们今天就来解决这个问题,

    2024年02月10日
    浏览(48)
  • 修改WIN11右键菜单为经典右键菜单(这一招足够)

    1 、首先我们在电脑桌面主页按下“ Win+R 键 ”,打开运行对话框; 2 、接着在对话框中输入指令“ regedit ”然后按下回车确认,打开注册表界面; 3 、找到如下注册表路径: 也可以直接在如下图位置输入注册表路径 → 回车,进入到注册表相应位置。 4 、接着鼠标右键空白的地

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包