效果图:
代码:
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); }