QT-鼠标事件

 因为一开始label并没有事件捕捉的能力,所以要建立一个QLabel类给他提升一下,让他可以被追踪。

创建类时无法直接从QLabel中直接继承,所以选择从QWidget中继承。

首先,建立一个C++class,名为my_label,基类是QWidget

.h文件中 将以下两处改为QLabel。

 .cpp文件中将继承于QWidget修改成继承于QLabel

 

 在my_label.h文件中声明一下鼠标进入和鼠标离开事件的函数。

.h文件中函数声明不需要写作用域。

 在my_label.cpp中实现鼠标进入和鼠标离开事件的实现。

.cpp文件中函数的实现需要带上作用域

 将widge.ui中的label进行提升,提升为my_label即可。

 

 

1.鼠标移动

//鼠标移动
void my_label::mouseMoveEvent(QMouseEvent *ev)
{
    qDebug()<<QString::fromLocal8Bit("鼠标移动");
}

2.鼠标按下

新的输出数据的方法:利用QString

用.arg输出数据、%1代表第一个参数,%2代表第二个参数(获取鼠标点击的点)

//鼠标按下
void my_label::mousePressEvent(QMouseEvent *ev)
{
    QString str = QString(QString::fromLocal8Bit("鼠标按下 X = %1  Y= %2").arg(ev->x()).arg(ev->y()));
    qDebug()<<str;
}

 3.鼠标释放

//鼠标释放
void my_label::mouseReleaseEvent(QMouseEvent *ev)
{
    qDebug()<<QString::fromLocal8Bit("鼠标释放");
}

       

 4.判断键值如果鼠标左键按下才进行操作

如果鼠标左键按下,打印内容。

//鼠标按下
void my_label::mousePressEvent(QMouseEvent *ev)
{
    if(ev->button() == Qt::LeftButton)
    {
        QString str = QString(QString::fromLocal8Bit("鼠标按下 X = %1  Y= %2").arg(ev->x()).arg(ev->y()));
        qDebug()<<str;
    }

}

 5.联合按键判断的时候

&的操作全为真才为真,当鼠标左键按下的时候为真。

//鼠标移动
void my_label::mouseMoveEvent(QMouseEvent *ev)
{
    if(ev->buttons() & Qt::LeftButton)
    {
         qDebug()<<QString::fromLocal8Bit("鼠标移动");
    }
}

6.设置鼠标追踪 

在构造函数里写,这是个虚函数,要通过构造函数去调用所以要写在构造函数里

setMouseTracking(true);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值