Qt 控件图标SVG实现
应用程序开发时为了美观通常都会有几套皮肤,界面背景颜色、文字颜色等是可以调整rgb值切换成对应皮肤的颜色值,但是图标就不可以这样切换,除非提前加载所有皮肤的图标,但是这样就会加载很多份,浪费程序资源,这个时候我们就可以使用svg格式的图片,这样就可以动态修改图片颜色。
首先来讲一下是如何动态修改SVG的颜色的,使用文本文档打开SVG其实可以发现SVG就是xml格式的文件,所以我们可以通过修改节点属性修改图片的颜色。
加载SVG图标
//定义按钮
QToolButton *btn= new QToolButton ;
加载SVG文件 svg_path:文件路径
QSvgRenderer *svg_render = new QSvgRenderer(svg_path);
SVG转换QPixmap
定义QPixmap 对象
QPixmap *pixmap = new QPixmap(32, 32);
pixmap->fill(Qt::transparent);
//创建QPixmap 画布
QPainter painter(pixmap);
//将SVG图片写到画布中去
svg_render->render(&painter);
创建图标
QIcon ico(*pixmap);
//按钮设置图标
btn->setIcon(ico);
以上几行代码就是qt中显示SVG图片的方法,接下来要修改SVG图片,将svg文件读到xml对象中,然后修改颜色属性
QString path