【Qt】事件

1.enterEvent/leaveEvent

当鼠标进入enterEvent重写的那个控件,就会触发enterEvent,如果鼠标离开该控件,就会触发leaveEvent
新建一个c++的类使用多态重写enterEvent函数来实现自己想要的功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

void Label::enterEvent(QEvent *event)
{  (void)event;
  qDebug()<<"enterEvent";
}

void Label::leaveEvent(QEvent *event)
{
    (void)event;
    qDebug()<<"leaveEvent";}

需要注意的是需要对那个ui界面上的label进行提升

2.mousePressEvent/mouseReleaseEvent(鼠标按下/鼠标释放)

在这里插入图片描述

void Label::mousePressEvent(QMouseEvent *event)
{
    qDebug()<<event->x()<<","<<event->y();//鼠标按下,显示鼠标的坐标
}

也可以显示鼠标在电脑屏幕上的坐标

void Label::mousePressEvent(QMouseEvent *event)
{
    //qDebug()<<event->x()<<","<<event->y();//鼠标按下,显示鼠标的坐标
      qDebug()<<event->globalX()<<","<<event->globalY();//鼠标按下,显示鼠标在电脑屏幕上的坐标
}

根据鼠标不同键按下,debug不同的信息

void Label::mousePressEvent(QMouseEvent *event)
{
    //qDebug()<<event->x()<<","<<event->y();//鼠标按下,显示鼠标的坐标
     // qDebug()<<event->globalX()<<","<<event->globalY();//鼠标按下,显示鼠标在电脑屏幕上的坐标
    if(event->button()==Qt::LeftButton)
    {
        
        qDebug()<<"左键被按下";
        
    }
    if(event->button()==Qt::RightButton)
    {
        qDebug()<<"右键被按下";
        
        
    }
 
}

鼠标释放时触发槽函数

void Label::mouseReleaseEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton)
    {qDebug()<<"左键释放";}
    else if(event->button()==Qt::RightButton)
    {qDebug()<<"右键释放";}
}

3.mouseDoubleClickEvent

如果鼠标被双击,则触发该槽函数

void Label::mouseDoubleClickEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton)
    {
        qDebug()<<"左键被按下";
        
        
    }
    if(event->button()==Qt::RightButton)
       {
         qDebug()<<"右键被双击";
        
       }
}

4.mouseMoveEvent

如果鼠标移动了触发该槽函数

void Label::mouseMoveEvent(QMouseEvent *event)
{
    qDebug()<<event->x()<<","<<event->y();
}

还必须要实时打印鼠标坐标的话,还必须加上下面的

Label::Label(QWidget *parent):QLabel(parent)
{
    (void)parent;
    this->setMouseTracking(true);//设置鼠标追踪
}

5.wheelEvent

滚轮事件
当滚轮滚动时,打印出滚轮位置的改变值

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    data=0;//全局变量用来记录滚轮的当前值
}

Widget::~Widget()
{
    delete ui;
}

void Widget::wheelEvent(QWheelEvent *event)
{
    data+=event->delta();//加上变化值
    qDebug()<<data;//打印结果
}

6.keyPressEvent

当键盘有键按下,触发该槽函数

void Widget::keyPressEvent(QKeyEvent *event)
{
    if(event->key()==Qt::key_A)//A键如果被按下
    {qDebug()<<"A被按下";}
}

如果是组合键的话

void Widget::keyPressEvent(QKeyEvent *event)
{
        if(event->key()==Qt::Key_A&&event->modifiers()==Qt::ControlModifier)
        {
            qDebug()<<"ctrl+a键被按下";
    
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#小多子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值