Qt获取鼠标移动事件,窗口内任意位置按下鼠标左键拖动窗口

这篇具有很好参考价值的文章主要介绍了Qt获取鼠标移动事件,窗口内任意位置按下鼠标左键拖动窗口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

重写窗口的两个事件函数mousePressEvent和mouseMoveEvent即可:

在mousePressEvent 中,按下鼠标左键时,记录窗口坐标,其中窗口坐标的计算是由鼠标事件获取到鼠标在整个屏幕中的坐标(ev->globalpos()),然后再使用pos()获取到鼠标在窗口内的相对位置,两者之差就是窗口在整个屏幕上的坐标x,y。如下:

qt 鼠标移动事件,qt,开发语言,Powered by 金山文档

在Qt中可以直接使用ev->globalPos() - pos(),两者相减获取到程序窗口在屏幕上的坐标(x,y);

在mouseMoveEvent中,事件是不断实时触发的,通过move方法传入实时计算的窗口目标位置,然后实时刷新移动窗口;文章来源地址https://www.toymoban.com/news/detail-520948.html

void Dialog::mousePressEvent(QMouseEvent *ev)
{
    //鼠标左键按下时记录坐标
    if(ev->button() == Qt::LeftButton){
//        ev->globalPos() 获取鼠标的全局坐标(在整个屏幕中)
//        pos()获取的是鼠标在窗口中的相对位置坐标(在程序窗口内)
//        last_pos为前者与后者的差(鼠标的绝对坐标-鼠标在窗口内的相对坐标偏移),也就是窗口左上角在桌面的坐标x,y
        last_pos = ev->globalPos()-pos();
        qDebug()<<"last_pos:"<<last_pos;
    }

    return QDialog::mousePressEvent(ev);
}

void Dialog::mouseMoveEvent(QMouseEvent *ev)
{
    if( ev->buttons() & Qt::LeftButton){  //注意这里是&按位与,不是&&,只有鼠标左键按下时才触发
        move(ev->globalPos()-last_pos); // 实时计算窗口的x,y坐标
//        qDebug()<<"move"<<ev->globalPos()-last_pos;
        last_pos = ev->globalPos() - pos();
    }

    return QDialog::mouseMoveEvent(ev);
}

到了这里,关于Qt获取鼠标移动事件,窗口内任意位置按下鼠标左键拖动窗口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • TextBox添加鼠标按下、失去焦点、鼠标移动等事件及重写

    TextBox添加鼠标按下、失去焦点、鼠标移动等事件及重写 方法1: 方法2:    

    2024年02月15日
    浏览(25)
  • QT基础:event 函数重载、筛选鼠标按压事件、获取鼠标位置、右键显示菜单、修改鼠标样式功能演示

    这里演示的是QT基础,主要包含: event 函数重载、筛选鼠标按压事件、获取鼠标位置、右键显示菜单、修改鼠标样式等功能演示, 适合初学者食用 。 演示功能:点击鼠标左键、右键、中键、左右键同时点击,输出鼠标当前坐标;按下鼠标中键,鼠标样式被替换,按下鼠标左

    2024年02月09日
    浏览(31)
  • VBA高级应用30例应用2:MouseMove鼠标左键按下并移动鼠标事件

    《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家 在实际工作中分发VBA程序,写好的

    2024年04月27日
    浏览(30)
  • Python: 实现鼠标点击tkinter窗口任意位置拖动

    近期在用python的tkinter库开发一个GUI,在开发接近尾声时候,同事发现一个问题:因GUI窗口较大,在他的笔记本上不能全部展示,而且只能通过点击顶部状态栏才能拖动,这样即使鼠标已经在屏幕最顶部,也无法看到窗口底部的控件。 一个解决方法就是:窗口及控件可以自适

    2024年02月11日
    浏览(43)
  • 【Unity脚本开源】记录鼠标按下的位置和移动的距离来进行物体的旋转,并在鼠标释放后将物体恢复到初始旋转位置

    ♥️作者:白日参商 🤵‍♂️个人主页:白日参商主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油! 加油! 加油 🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+! 提针对这个需求,以下是示例脚本代码: ♥️作者

    2024年02月12日
    浏览(31)
  • 【AHK】鼠标调整窗口大小/移动窗口位置/窗口置顶/透明度

    通过AHK,设置窗体大小或位置,首先是两种鼠标调节窗体方案,后面是快捷键,注意修改快捷键的位置有两个,仿照Ubuntu调节窗体的快捷键 Alt+F7、Alt+F8,个人感觉比要按着ALT调节的小工具要好用一点。 如果换成单个F7、F8触发,只需要将多出的GetKeyState删除即可,具体函数意

    2024年02月12日
    浏览(31)
  • Qt 窗口随鼠标移动效果

    实现在窗口任意位置按下鼠标左键都可以移动窗口的效果,完整代码如下: mainwindow.h: mainwindow.cpp:

    2024年02月13日
    浏览(26)
  • C++实现【获取鼠标位置】以及控制鼠标【打开窗口并点击】

    获取鼠标位置的函数源代码来自:C++【认知系列】实时获取鼠标坐标_c++ 获取鼠标坐标_Zalamp的博客-CSDN博客 鼠标点击操作代码来自: C++控制鼠标移动到指定位置并且左键点击_c++鼠标移动_蜚语77的博客-CSDN博客 在特定程序中实现鼠标点击操作分为两步,第一步就是在任务栏点

    2024年02月12日
    浏览(34)
  • Qt鼠标点击事件处理:显示鼠标点击位置(完整示例)

    Qt 入门实战教程(目录) 前驱文章: Qt Creator 创建 Qt 默认窗口程序(推荐) 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。 例如点击鼠标,按下按键。 在Qt中使用一个对象来表示一个事件,它继承自QEvent类。 如鼠标事件(例如点击

    2024年02月10日
    浏览(38)
  • Qt/C++音视频开发60-坐标拾取/按下鼠标获取矩形区域/转换到视频源真实坐标

    通过在通道画面上拾取鼠标按下的坐标,然后鼠标移动,直到松开,根据松开的坐标和按下的坐标,绘制一个矩形区域,作为热点或者需要电子放大的区域,拿到这个坐标区域,用途非常多,可以直接将区域中的画面放大,也可以将该圈起来的区域位置发给设备,由设备设定

    2024年02月03日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包