Qt中mouseMoveEvent和mousePressEvent实现鼠标滑动换label颜色

这篇博客介绍了如何在Qt应用中通过mouseMoveEvent和mousePressEvent事件处理函数,实现在鼠标滑过Label时改变其颜色,同时改变鼠标形状。通过设置鼠标跟踪和自定义信号与槽,使得在不同Label范围内能触发相应的背景图片切换效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

buptyoyo:Qt中mouseMoveEvent和mousePressEvent实现鼠标滑动换label颜色

当鼠标划过上面的一排Label后,鼠标形状变成手状,并且使label自动切换颜色。

 

 

很自然的会想到在一个Label上,检测鼠标的mouseMoveEvent事件,当划过label时候,切换到另一个绿色的图片。鼠标的形状可以采用QT自带的Qt::OpenHandCursor。

 

具体的实现为:

 

//往一个label添加图片

 

ui.label_90->setStyleSheet("background-image:url(./pic/1.jpg)");

 

//添加label的响应事件,clicked1是自定义的信号,page0是自定义的槽

connect(this,SIGNAL(clicked1()),this,SLOT(page0()));

 

//获取该个label的相关信息,

x1=ui.label_90->x();

y1=ui.label_90->y();

x1width=ui.label_90->width();

y1height=ui.label_90->height();

 

//设置鼠标跟踪事件

this->setMouseTracking(true);

 

ui.label_90->setMouseTracking(true);

 

void ImageWidget1::page0(){

   ui.stackedWidget->setCurrentIndex(0);//表示第一个页面,以下类似

}

 

//鼠标点击事件,根据点击的不同的label确定发出的信号

 

void ImageWidget1::mousePressEvent(QMouseEvent *event){

if (event->button()==Qt::LeftButton)

{

   int x=event->x();

   int y=event->y();

 

   if (x>x1&&x<x1+x1width&&y>y1&&y<y1+y1height)

   {

    emit clicked1();

   }

   if (x>x2&a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值