Qt用SVG图片作为背景图

svg可缩放,作为背景图十分方便。

Based on Qt 5.5.1 (MSVC 2013, 32 bit)

1.使用QSvgWidget

//添加一个widget 提升为QSvgwidget   
QString strFile="Dharma_Wheel.svg";
this->ui->svgWidget->load(strFile);

2.QTreeWidget添加svg背景图片

方法1:

QPalette palette;
QString strFile1="111.svg";
palette.setBrush(QPalette::Base,
QBrush(QPixmap(strFile1)/*.scaled(this->ui->treeWidget->size(),
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation)*/));
//palette.setBrush(QPalette::Base,QBrush(QPixmap(strFile1)/*.scaled(this->ui->treeWidget->width(),this->ui->treeWidget->height()*/));
this->ui->treeWidget->setPalette(palette);
此方法当QTreeWidget缩放时会重复出现。

方法2:

子类化QTreeWidget,重写resizeEvent

#include <QResizeEvent>
void QMyTreeWidget::resizeEvent(QResizeEvent *event)
{
    QTreeWidget::resizeEvent(event);
    QPalette palette;
    QString strFile1="111.svg";
    palette.setBrush(QPalette::Base,
                     QBrush(QPixmap(strFile1).scaled(event->size(),
                                                     Qt::IgnoreAspectRatio,
                                                     Qt::SmoothTransformation)));
    //palette.setBrush(QPalette::Base,QBrush(QPixmap(strFile1)/*.scaled(this->ui->treeWidget->width(),this->ui->treeWidget->height()*/));
    this->setPalette(palette);
}

3.MainWidget添加背景图

void MainWindow::paintEvent(QPaintEvent *event)
{
    QSvgRenderer * Converter = new QSvgRenderer( this );
    QString strFile="logo_man.svg";
    Converter -> load(strFile);
    QPainter p( this );
    Converter -> render( &p );
}

来一张效果图:


阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页