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