Qt QPainter实现按钮添加半透明图片


效果图:

 

代码:

void InterfaceSwitch::paintEvent(QPaintEvent *)
{
    //实现带图片的半透明背景
    QPixmap covert_pixmap(str_image);//str_image是图片位置
    QPixmap pixmap(covert_pixmap.width(), covert_pixmap.height());
    pixmap.fill(Qt::transparent);

    QPainter painter_pixmap(&pixmap);
    QPoint start_point = this->rect().topLeft();
    QPoint end_point = this->rect().bottomRight();
//    qDebug()<<"pix.width="<<covert_pixmap.width()<<"pix.heigth="<<covert_pixmap.height();
//    qDebug()<<"topLeft="<<this->rect().topLeft()<<"bottomRight="<<this->rect().bottomRight();
    //QLinearGradient进行渐变色设置
    QLinearGradient linear_gradient(start_point, end_point);
    linear_gradient.setColorAt(0.5, QColor(255, 255, 255, 150));

    painter_pixmap.setRenderHint(QPainter::Antialiasing, true);//抗锯齿
    painter_pixmap.fillRect(this->rect(), QBrush(linear_gradient));//渐变色
    painter_pixmap.setCompositionMode(QPainter::CompositionMode_SourceIn);//复合模式
    painter_pixmap.drawPixmap(0, 0, covert_pixmap);

    QRect   rec = this->rect();
    rec.setX(rec.x()-6);
    rec.setY(rec.y()-6);
    painter_pixmap.drawText(rec, Qt::AlignCenter,"温度");//显示的文字
    painter_pixmap.end();

    QPainter painter2(this);
    painter2.drawPixmap(0, 0, pixmap);

}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM