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