qt鼠标事件

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

一:qt的鼠标事件包含头文件 <QMouseEvent>

二:qt鼠标事件需要重写虚函数

(1):鼠标移动事件(需捕捉到鼠标后,才可以打印坐标,在QWidget内点击鼠标后,就可以捕捉到鼠标)

void mouseMoveEvent(QMouseEvent *event);
void Widget::mouseMoveEvent(QMouseEvent *event)
{
    QPoint p_ab = event->globalPos();//相对于整个桌面的位置
    QPoint p_re = event->pos();//相对于Widget窗口内的位置
    
    QString str1, str2;
    str1 = QString("%1 , %2").arg(p_ab.x()).arg(p_ab.y());//存放相对于整个桌面的x,y坐标
    str2 = QString("%1 , %2").arg(event->x()).arg(event->y());//存放相对于Widget的x,y坐标
    //str2 = QString("%1 , %2").arg(p_re.x()).arg(p_re.y());//存放相对于Widget的x,y坐标,与上面等价
    qDebug() << str1 << " | " << str2 << endl;
}

(2):持续捕捉鼠标事件(持续捕捉鼠标事件,不用按下鼠标,只要鼠标在QWidget内移动,就可以捕捉)

鼠标移动事件,只要移动鼠标,就会触发这个函数,其中,正常情况下,只有当鼠标在QWidget界面点击鼠标后,才会捕捉到鼠标的坐标,那如何实现,在不点击鼠标的情况下,也可以捕捉到鼠标移动事件呢?

代码如下:

//QWidget的构造函数
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //添加如下代码
    this->setMouseTracking(true);//持续捕捉鼠标事件,不用按下鼠标也可以捕捉到;
}

(3):鼠标点击事件(左键点击,右键点击)

void mousePressEvent(QMouseEvent *event);
void Widget::mousePressEvent(QMouseEvent *event)
{
    if(event->button() & Qt::LeftButton)
    {
        qDebug() << "鼠标左键按下" << endl;
    }
    else if(event->button() & Qt::RightButton)
    {
        qDebug() << "鼠标右键按下" << endl;
    }
}

(4):鼠标释放事件(左键释放,右键释放)

void mouseReleaseEvent(QMouseEvent *event);
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    if(event->button() & Qt::LeftButton)
    {
        qDebug() << "鼠标左键释放" << endl;
    }
    else if(event->button() & Qt::RightButton)
    {
        qDebug() << "鼠标右键释放" << endl;
    }
}

(5):鼠标双击事件(左键双击,右键双击)

void mouseDoubleClickEvent(QMouseEvent *event);
void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{
    if(event->button() & Qt::LeftButton)
    {
        qDebug() << "鼠标左键双击" << endl;
    }
    else if(event->button() & Qt::RightButton)
    {
        qDebug() << "鼠标右键双击" << endl;
    }
}

(6):滚轮事件(只涉及了鼠标滚轮的滚动,不涉及鼠标滚轮的按下)

void wheelEvent(QWheelEvent *event);
void Widget::wheelEvent(QWheelEvent *event)
{
    if(event->delta() > 0)
    {
        qDebug() << "滚轮远离使用者" << endl;
    }
    else if(event->delta() < 0)
    {
        qDebug() << "滚轮靠近使用者" << endl;
    }
}

三,鼠标与窗口(还未实验,需要考证)

(1):进入窗口区域事件(还未实验,需要考证)

比如在主窗口QWidget下有一个父窗口Lable,在鼠标进入Lable窗口时,就会触发此函数文章来源地址https://www.toymoban.com/news/detail-490976.html

void MyLabel::enterEvent(QEvent *)
{
    QString text=QString("<center><h1>Mouse enter</h1></center>");
    this->setText(text);
}

(2):离开窗口区域事件(还未实验,需要考证)

void MyLabel::leaveEvent(QEvent *){
    QString text=QString("<center><h1>Mouse leave</h1></center>");
    this->setText(text);
}

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

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

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

相关文章

  • Qt 鼠标进入离开事件

    QEvent::Enter ​ 鼠标进入事件,当鼠标进入到窗口/控件内部时,触发该事件,它对应的子类是 QEnterEvent QEvent::Leave ​ 鼠标离开事件,当鼠标离开到窗口/控件内部时,触发该事件 自定义一个标签控件 LabelX ,让它继承自 QLabel ,然后重写父类的 enterEvent 和 leaveEvent 。 代码如下:

    2024年01月24日
    浏览(38)
  • qt鼠标常用事件

    和上一个案例相同,也是做了提升,换了相同父类,但是方式有所不同 先在widget.ui中加入label标签,此时其父类为QLabel,然后想实现鼠标在QLabel上的捕获。所以我们需要把QLabel提升为自己的框架,然后自定义框架后,我们就可以自己捕获信息了。然后添加新文件mylabel.h和mylabel.cpp,

    2024年02月02日
    浏览(39)
  • Qt开发-鼠标事件

    个人认为,事件机制是Qt最难以理解且最为精妙的一部分。事件主要分为两种: 在与用户交互时发生 。比如按下鼠标(mousePressEvent),敲击键盘(keyPressEvent)等。 系统自动发生 ,比如计时器事件(timerEvent)等。 在发生事件时(比如说上面说的按下鼠标),就会产生一个

    2024年02月09日
    浏览(43)
  • 【QT】鼠标常用事件

    新建项目 加标签控件 当鼠标进去,显示【鼠标进入】,离开时显示【鼠标离开】 将QLable提升成自己的控件,然后再去捕获 添加文件 改继承的类名 提升类 同一个父类,可以提升 效果 现在代码就和Qlabel对应起来了。 在.h中声明,.cpp中实现 测试 鼠标的移动、按下、松开事件

    2024年02月06日
    浏览(40)
  • Qt5鼠标事件

    判断鼠标按下了哪个键 本文福利, 莬 费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击 莬 费领取

    2024年02月12日
    浏览(31)
  • QT的使用3:鼠标事件

    用户对界面中的控件进行操作后,控件需要进行响应,响应一般有两种方式,一种是之前学过的槽函数,另一种是事件,部分操作无法通过槽函数响应,只能通过事件,例如鼠标移动,键盘输入等。 当某个事件(鼠标、键盘)发生的时候,相关控件就会收到这个事件,并且调

    2024年02月13日
    浏览(39)
  • qt 禁止点击 屏蔽鼠标事件

    我开了一个线程上传文件夹,用一个进度条显示进度 测试 就在界面随便点击 ,也没有出泵任何控件,没有引发槽函数,直接就崩了! 不知道为什么崩了,所以直接禁止点击,蔽鼠标事件! 主界面 进度条 Qt::WidgetAttribute::WA_TransparentForMouseEvents 该属性的含义是“透明掉鼠标事

    2024年02月15日
    浏览(42)
  • QT学习日记12——Qt中的鼠标事件

    学习视频链接 最新QT从入门到实战完整版|传智教育_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1g4411H78N?p=31vd_source=0471cde1c644648fafd07b54e303c905 目录 一、鼠标进入和出去事件 1.1 新建 C++ 文件 1.2 编写代码 1.3 操作 1.4 运行结果 二、鼠标点击、释放和移动事件 2.1 修改代码 2.2 运行结

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

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

    2024年02月10日
    浏览(56)
  • Qt知识笔记(八)—— 鼠标和事件

    默认情况下,触发事件需要点击一下,才能触发。可设置为自动触发: setMouseTracking(true); 鼠标事件有单机,双击,释放,移动,滑轮 单机:void mousePressEvent(QMouseEvent *event); 双击:void mouseDoubleClickEvent(QMouseEvent *event); 释放:void mouseReleaseEvent(QMouseEvent *event); 移动:void mouseMove

    2024年02月16日
    浏览(68)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包