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 bool cont = QQuickQmlGenerator::generateRootNode(info);
47 if (info.stage == StructureNodeStage::End) {
48 if (m_qmlContext ==
nullptr) {
49 qCWarning(lcQuickVectorImage) <<
"QQuickItemGenerator::generateRootItem: Requires QML context";
53 QQmlEngine *engine = m_qmlContext->engine();
54 if (engine ==
nullptr) {
55 qCWarning(lcQuickVectorImage) <<
"QQuickItemGenerator::generateRootItem: Requires QML engine";
59 QQmlComponent component(engine);
60 component.setData(m_result.data(), QUrl{});
61 QObject *obj = component.create(m_qmlContext);
62 QQuickItem *rootItem = qobject_cast<QQuickItem *>(obj);
63 if (rootItem ==
nullptr) {
66 qCWarning(lcQuickVectorImage) <<
"QQuickItemGenerator::generateRootItem: Root item not a QQuickItem: " << component.errorString();
70 m_parentItem->setImplicitWidth(rootItem->width());
71 m_parentItem->setImplicitHeight(rootItem->height());
73 rootItem->setParent(m_parentItem);
74 rootItem->setParentItem(m_parentItem);