24QQuickItemGenerator::QQuickItemGenerator(
const QString fileName,
25 QQuickVectorImageGenerator::GeneratorFlags flags,
26 QQuickItem *parentItem,
28 : QQuickQmlGenerator(fileName, flags, QString{})
29 , m_parentItem(parentItem)
32 setRetainFilePaths(
true);
34 QString tmpDir = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
35 setAssetFileDirectory(tmpDir);
36 setAssetFilePrefix(QStringLiteral(
"_qt_vectorimage_"));
37 setUrlPrefix(QStringLiteral(
"file:"));
44bool QQuickItemGenerator::generateRootNode(
const StructureNodeInfo &info)
46 if (Q_UNLIKELY(errorState()))
49 bool cont = QQuickQmlGenerator::generateRootNode(info);
50 if (info.stage == StructureNodeStage::End) {
51 if (m_qmlContext ==
nullptr) {
52 qCWarning(lcQuickVectorImage) <<
"QQuickItemGenerator::generateRootItem: Requires QML context";
56 QQmlEngine *engine = m_qmlContext->engine();
57 if (engine ==
nullptr) {
58 qCWarning(lcQuickVectorImage) <<
"QQuickItemGenerator::generateRootItem: Requires QML engine";
62 QQmlComponent component(engine);
63 component.setData(m_result.data(), QUrl{});
64 QObject *obj = component.create(m_qmlContext);
65 QQuickItem *rootItem = qobject_cast<QQuickItem *>(obj);
66 if (rootItem ==
nullptr) {
69 qCWarning(lcQuickVectorImage) <<
"QQuickItemGenerator::generateRootItem: Root item not a QQuickItem: " << component.errorString();
73 m_parentItem->setImplicitWidth(rootItem->width());
74 m_parentItem->setImplicitHeight(rootItem->height());
76 rootItem->setParent(m_parentItem);
77 rootItem->setParentItem(m_parentItem);