标题:为什么qt显示svg文件时背景变黑色?
作者:chemmyhuang
日期:2011-09-20 16:18
内容:
手上有一个svg文件,里面有文字和一张图片,背景色是透明的(我不能更改这个svg文件)
用浏览器显示正常,但用QT显示图片背景变成了黑色,而文字背景部分正常是白色
请教大家QT应该如何做才能让此图显示正常?
我的做法是:
QPainterpainter(QImage Image);
QSvgRenderer svgRenderer;
QLabel label;
svgRenderer->load(svgPath);
svgRenderer->render(&painter);
QPixmap pixmap = QPixmap::fromImage(* Image);
label->setPixmap(pixmap );
代码只是主要步骤示意,我试过将QPainter的背景色用painter.setBackground设成背景白色
但这只是让文字部分的背景色全部变成了白色(原先有一部分文字的背景也是黑的)
请教大家QT里还需如何处理使这个svg文件显示正常?急!!!
#1 [chemmyhuang 09-21 10:04]
继续求帮助!
#2 回 1楼(chemmyhuang) 的帖子 [jdwx 09-21 11:03]
QPixmap pixmap(rect());
pixmap.fill(QColor(0,0,0,0));
QPainter p(&pixmap);
QLabel label;
svgRenderer->load(svgPath);
svgRenderer->render(&p);
label->setPixmap(pixmap );
试试上面的代码。
#3 回 2楼(jdwx) 的帖子 [chemmyhuang 09-21 13:35]
就是不使用QImage是吗?我试过了还是一样的
另外我发现,用QT的demo程序在windows下打开这个svg文件发现有些字是彩色的,当然背景还是黑的
但把demo的代码放到linux下编译运行,文字全部都是黑色的!
问题真是越来越有趣了。。
#4 回 3楼(chemmyhuang) 的帖子 [jdwx 09-21 14:27]
pixmap.fill(QColor(0,0,0,0));关键是这行让背景透明。
我用svg没啥问题,另外QtCreator的资源文件编辑器可以显示svg,把你的svg加到资源文件里就能看到效果。
#5 回 4楼(jdwx) 的帖子 [chemmyhuang 09-21 15:12]
我的代码打开其他一些的svg文件也没有问题,我觉得问题可能是在于我现在要打开的那个是个图片背景是透明的svg文件,我想知道在无法改变svg的基础上怎么设置QT让这个文件显示正常。
我的思路是把QLabel或者QPixmap或者QImage的背景设颜色,结果发现也只有svg文件中文字部分的背景变了色,而图片的背景仍然是一片黑色。。。
另外,QtCreator的资源文件编辑器请问是指什么?qrc吗?