Qt如何将Svgz呈现给QImage?
我使用以下代码来显示Svgz图像 我的代码: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
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);