1 Qt加载SVG图片
1QTreeWidgetItem *item = new QTreeWidgetItem; 2//svg_path为SVG图片路径 3QSvgRenderer *svg_render = new QSvgRenderer(svg_path); 4QPixmap *pixmap = new QPixmap(32, 32); 5pixmap->fill(Qt::transparent); 6QPainter painter(pixmap); 7svg_render->render(&painter); 8QIcon ico(*pixmap); 9item->setIcon(1, ico);
2 Qt改变SVG图片颜色
1QTreeWidgetItem *item = new QTreeWidgetItem; 2QString path = svg_path; 3QFile file(path); 4file.open(QIODevice::ReadOnly); 5QByteArray data = file.readAll(); 6QDomDocument doc; 7doc.setContent(data); 8file.close(); 9 10QString color = "blue"; 11 12SetSVGBackColor(doc.documentElement(), "path", "fill", color); 13 14QByteArray svg_content = doc.toByteArray(); 15QSvgRenderer *svg_render = new QSvgRenderer(svg_content); 16QPixmap *pixmap = new QPixmap(32, 32); 17pixmap->fill(Qt::transparent); 18QPainter painter(pixmap); 19svg_render->render(&painter); 20QIcon ico(*pixmap); 21item->setIcon(0, ico); 22 23void SetSVGBackColor(QDomElement &elem, QString strtagname, QString strattr, QString strattrval); 24 25void SetSVGBackColor(QDomElement &elem, QString strtagname, QString strattr, QString strattrval) 26{ 27 if (elem.tagName().compare(strtagname) == 0) 28 { 29 QString before_color = elem.attribute(strattr); 30 elem.setAttribute(strattr, strattrval); 31 QString color = elem.attribute(strattr); 32 } 33 for (int i = 0; i < elem.childNodes().count(); i++) 34 { 35 if (!elem.childNodes().at(i).isElement()) 36 { 37 continue; 38 } 39 SetSVGBackColor(elem.childNodes().at(i).toElement(), strtagname, strattr, strattrval); 40 } 41}