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

1.概述

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

2.实现方案

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

2.1 实现思路

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

2.2 QT实现示例

此处以c++ QT做一个简单的示例,其它的UI界面库原理是一样的

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;
}

相关推荐

  1. UI界面程序鼠标菜单一些

    2023-12-06 05:54:04       40 阅读
  2. Android 长按电源GlobalActions菜单

    2023-12-06 05:54:04       37 阅读
  3. Sublime text 添加到鼠标菜单,脚本实现

    2023-12-06 05:54:04       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 05:54:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 05:54:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 05:54:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 05:54:04       18 阅读

热门阅读

  1. 学习TypeScrip3(接口和对象类型)

    2023-12-06 05:54:04       39 阅读
  2. vue自定义指令配置小程序按钮权限

    2023-12-06 05:54:04       36 阅读
  3. 第八章 List、Set、数据结构、Collections

    2023-12-06 05:54:04       32 阅读
  4. cookie,session、中间件、csrf认证相关【补充】

    2023-12-06 05:54:04       32 阅读
  5. 【ListView】

    2023-12-06 05:54:04       39 阅读
  6. docker安装常用的中间件脚本

    2023-12-06 05:54:04       28 阅读
  7. 水库监管AI视觉算法与边缘计算盒子

    2023-12-06 05:54:04       62 阅读