Qt修改鼠标样式为自定义图标

1.修改鼠标样式

代码如下(示例):

    //修改鼠标样式
    QString mouseFileName = qApp->applicationDirPath() + '/' + "ConfigurationFile" + '/' + "mouseFile" + '/' + "mouse.png";
    QString imagepath;
    if(!myCommonlyUsed.FileIsExist(mouseFileName))
        imagepath = "://image/mouse.png";
    else
        imagepath = mouseFileName;
    QPixmap pix(imagepath);
    QSize size(40,40);
    //设置图片大小
    pix = pix.scaled(size,Qt::KeepAspectRatio);
    this->setCursor(QCursor(pix,pix.height()/8,pix.width()/8));     //设置光标的热点位置

1.效果图

请添加图片描述

2.修改鼠标点击效果

代码如下(示例):

/***********h头文件*****************/
int mousePressflag = 0;
void mousePressEvent(QMouseEvent *event);                           //鼠标点击事件
/***********cpp文件*****************/
//鼠标点击事件
void MainWindow::mousePressEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton)
    {
        if(mousePressflag == 0)
        {
            mousePressflag = 1;
            QLabel *label = new QLabel(this);
            label->setAttribute(Qt::WA_DeleteOnClose);
            QMovie *movie = new QMovie("://image/Mouse_click_feature.gif");//加载gif图片
            //设置label自动适应gif的大小
            label->setScaledContents(true);
            label->setMovie(movie);
            //这里为了调用move方便,进行resize,需要知道的是gif的大小本来也就是150*150
            label->resize(180,180);
            label->setStyleSheet("background-color:rgba(0,0,0,0);");
            //设置鼠标穿透
            label->setAttribute(Qt::WA_TransparentForMouseEvents, true);
            //让label的中心在当前鼠标双击位置
            label->move(event->x()-(label->width()/2),event->y()-(label->height()/2));
            //开始播放gif
            movie->start();
            label->show();
            QTimer::singleShot(500, this, [=](){label->close();mousePressflag = 0; delete movie;});
        }
    }
}

2.鼠标点击效果Gif资源

请添加图片描述

2.鼠标点击效果图

在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值