Qt如何将Svgz呈现给QImage?

Qt如何将Svgz呈现给QImage?,qt,svg,qt5,svgz,Qt,Svg,Qt5,Svgz,我使用以下代码来显示Svgz图像 我的代码: QRect sSize=QApplication::desktop()->screenGeometry(); m_targetImage = QImage(sSize.width(),sSize.height(),QImage::Format_ARGB32); ... QSvgRenderer *re = new QSvgRenderer(":/Images/Green_Curls.svgz"); QPainter pai(&m_t

我使用以下代码来显示Svgz图像

我的代码:

QRect sSize=QApplication::desktop()->screenGeometry();
m_targetImage = QImage(sSize.width(),sSize.height(),QImage::Format_ARGB32);
...
QSvgRenderer *re =  new QSvgRenderer(":/Images/Green_Curls.svgz");
QPainter pai(&m_targetImage);
re->render(&pai);
我遇到以下错误:

error: C2668: 'QSvgRenderer::QSvgRenderer' : ambiguous call to overloaded function
c:\qt\qt5.0.0\5.0.0\msvc2010\include\qtsvg\qsvgrenderer.h(74): could be 'QSvgRenderer::QSvgRenderer(const QByteArray &,QObject *)'
c:\qt\qt5.0.0\5.0.0\msvc2010\include\qtsvg\qsvgrenderer.h(73): or       'QSvgRenderer::QSvgRenderer(const QString &,QObject *)'
while trying to match the argument list '(const char [26])'

我在google上试过,但没有成功:(如何解决这个问题?

因为QByteArray和QString都有构造函数,它们的第一个参数都是const char*,编译器不知道该选择哪个

因此,如果要使用QString构造函数,则需要传入QString(:/Images/Green\u Curls.svgz),或者要传入QByteArray构造函数的QByteArray(:/Images/Green\u Curls.svgz)。

在Pro文件中:

QT += svg

代码:


新的qsvgrender(QString(:/Images/Green_Curls.svgz”);
-我现在正在更新答案:-)现在我收到以下错误:dashboard.obj:-1:错误:LNK2019:未解析的外部符号“\u declspec(dllimport)public:void\u此调用qsvgrender::render(类QPainter*)”(小鬼?render@QSvgRenderer@@QaexpavqPaint@@@Z)在函数“受保护:虚拟无效”中引用了此调用仪表板::paintEvent(类QPaintEvent*)(?paintEvent@DashBoard@@MAEXPAVQPaintEvent@@@Z)哦,我没有看到svgZ。不确定Qt是否支持它。dashboard.obj:-1:错误:LNK2019:未解析的外部符号“\u declspec(dllimport)public:u thiscall qsvgrender::qsvgrender(类QString const&,类QObject*)“(u imp??0qsvgrender@@QAE@ABVQString@@PAVQObject@@@Z)在函数“受保护的:虚拟无效”中引用。\u thiscall DashBoard::paintEvent(类QPaintEvent*)(?paintEvent@DashBoard@@MAEXPAVQPaintEvent@@@Z)这是一个链接器错误(完全无关)-您可能在链接器设置中缺少QtSvg库(
QT+=svg
将在qmake.pro文件中完成)-如果您正在这样做,则不知道如何在Visual Studio中执行此操作,但请搜索该库,这可能会被问到很多问题。感谢您的每一个问题。我修复了此问题。我的代码如下:
   QSvgRenderer *re =  new QSvgRenderer(QString(":/Images/Green_Curls.svgz"));
   QPainter pai(&m_targetImage);
   re->render(&pai);