我是靠谱客的博主 迷人板栗,这篇文章主要介绍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);

 

最后

以上就是迷人板栗最近收集整理的关于QT-鼠标事件的全部内容,更多相关QT-鼠标事件内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部