您是正确的,我混淆了 QPixmap
的构造函数和渲染 QSvgRenderer
对象到 QPixmap
上的过程。
要将 SVG 渲染到 QPixmap 上,需要在 QPainter 对象中进行绘制。以下是一个示例:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 加载 SVG 文件
QSvgRenderer renderer("your_svg_file.svg");
// 创建 QPixmap 对象并设置大小
QPixmap pixmap(renderer.defaultSize());
// 使用 QPainter 在 pixmap 上绘制 SVG 图像
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
renderer.render(&painter);
// 显示绘制好的图像到界面上
QLabel label;
label.setPixmap(pixmap);
label.show();
return a.exec();
}
首先,我们创建了一个 QSvgRenderer
对象并加载了指定的 SVG 文件。然后,我们使用 renderer.defaultSize()
获取SVG文件默认尺寸,并将其作为参数传递给 QPixmap
构造函数来创建一个具有相同大小的 QPixmap
对象。
接下来,在 pixmap
上使用 QPainter 绘制SVG图像。首先,我们使用 fill()
函数将所有像素点都填充为透明色。然后,我们创建了一个 QPainter 对象,并调用渲染器的 render()
函数来将 SVG 图像渲染到当前绘图设备(即 pixmap)上。
最后,我们创建了一个 QLabel 控件,并将 pixmap 设置为其背景图像。这样就可以在界面上显示渲染后的 SVG 图像了。
希望这个回答对您有所帮助。