zoukankan      html  css  js  c++  java
  • Qt加载SVG图片以及改变SVG图片颜色

    1 Qt加载SVG图片

    QTreeWidgetItem *item = new QTreeWidgetItem;
    //svg_path为SVG图片路径
    QSvgRenderer *svg_render = new QSvgRenderer(svg_path);
    QPixmap *pixmap = new QPixmap(32, 32);
    pixmap->fill(Qt::transparent);
    QPainter painter(pixmap);
    svg_render->render(&painter);
    QIcon ico(*pixmap);
    item->setIcon(1, ico);

    2 Qt改变SVG图片颜色

    QTreeWidgetItem *item = new QTreeWidgetItem;
    QString path = svg_path;
    QFile file(path);
    file.open(QIODevice::ReadOnly);
    QByteArray data = file.readAll();
    QDomDocument doc;
    doc.setContent(data);
    file.close();
    
    QString color = "blue";
    
    SetSVGBackColor(doc.documentElement(), "path", "fill", color);
    
    QByteArray svg_content = doc.toByteArray();
    QSvgRenderer *svg_render = new QSvgRenderer(svg_content);
    QPixmap *pixmap = new QPixmap(32, 32);
    pixmap->fill(Qt::transparent);
    QPainter painter(pixmap);
    svg_render->render(&painter);
    QIcon ico(*pixmap);
    item->setIcon(0, ico);
    void SetSVGBackColor(QDomElement &elem, QString strtagname, QString strattr, QString strattrval);
    
    void SetSVGBackColor(QDomElement &elem, QString strtagname, QString strattr, QString strattrval)
    {
        if (elem.tagName().compare(strtagname) == 0)
        {
            QString before_color = elem.attribute(strattr);
            elem.setAttribute(strattr, strattrval);
            QString color = elem.attribute(strattr);
        }
        for (int i = 0; i < elem.childNodes().count(); i++)
        {
            if (!elem.childNodes().at(i).isElement())
            {
                continue;
            }
            SetSVGBackColor(elem.childNodes().at(i).toElement(), strtagname, strattr, strattrval);
        }
    }
  • 相关阅读:
    在HTML5中,用getCurrentPosition()获取用户的当前位置
    邮件设置 ssl://smtp.exmail.qq.com:465 can not connect to the SMTP server
    IIS绑定中文域名
    destoon 会员状态栏不显示
    汉诺塔的移动--python递归实现
    微星 msi B450迫击炮+2600X+RX588 3A平台装机
    正则表达式-1
    接口--php对接农行网上支付平台-b2b
    python----字符串操作函数
    php面试题--1
  • 原文地址:https://www.cnblogs.com/LuckCoder/p/11171666.html
Copyright © 2011-2022 走看看