<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hello,<div><br></div><div>This can be done with QQmlFileSelector :</div><div><div><br></div><div>    QQmlApplicationEngine engine;</div></div><div><div>    QQmlFileSelector* qmlFileSelector = QQmlFileSelector::get(&engine);</div><div><br></div><div>#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)</div><div>    qmlFileSelector->setExtraSelectors({"5.12"});</div><div>#endif</div></div><div><br></div><div>    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));<br></div><div><br></div><div>This will load qrc:/+5.12/main.qml (if there's one) instead of qrc:/main.qml when the Qt version is >= 5.12.</div><div><br></div><div>Cheers,</div><div>Pierre-Yves</div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 18 mars 2019 à 09:13, Albert Astals Cid via Development <<a href="mailto:development@qt-project.org">development@qt-project.org</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">El diumenge, 17 de març de 2019, a les 13:34:09 CET, Alberto Mardegan va escriure:<br>
> Hi there!<br>
>   When developing a QML module for the greater public one wants to<br>
> provide a source package that can be built on multiple Qt versions.<br>
> However, QML's lack of a preprocessor makes this rather cumbersome.<br>
> <br>
> Suppose that my module needs to provide an element like this:<br>
> <br>
> ====<br>
> import QtQuick 2.10<br>
> <br>
> Item {<br>
>     ...<br>
>     Flickable {<br>
>         boundsMovement: Flickable.StopAtBounds<br>
>         ...<br>
>     }<br>
> }<br>
> ====<br>
> <br>
> If I wanted to make this available to users of Qt 5.9 and older, I'd<br>
> need to ship another file, instead, importing QtQuick 2.9 and removing<br>
> that "boundsMovement" property.<br>
> <br>
> Keeping two or more copies of the same file and installing the proper<br>
> one depending on the Qt version is certainly doable, but it carries a<br>
> considerable maintenance cost.<br>
> <br>
> I've personally decided to keep a single copy of each QML file but use<br>
> different git branches; however, this also has its maintenance costs and<br>
> makes things harder for people using the project, in that they need to<br>
> checkout the right branch of the project, otherwise it won't work on<br>
> their machines.<br>
> <br>
> Has this problem been recognized and discussed before? <br>
<br>
We have fixed this problem in some places by using a Loader that changes the source on loading error<br>
<br>
MyItem.qml code (which is what users of the code are supposed to use would be)<br>
Item<br>
{<br>
        Loader { <br>
                source: "MyItemForQuick210.qml" <br>
                onStatusChanged: if (loader.status == Loader.Error) source = "MyItemForQuick26.qml"<br>
        }<br>
}<br>
<br>
Not real code so may not "compile", but you should get the idea.<br>
<br>
It's not awesome but for our use-case it worked.<br>
<br>
Cheers,<br>
  Albert<br>
<br>
> Would a QML<br>
> preprocessor be a viable option?<br>
> I understand that this is not a problem for Qt itself, and it's a minor<br>
> problem for app developers; however, developing a portable QML module<br>
> depending on QtQuick is nearly impossible due to this, unless one agrees<br>
> to settle on a certain old version of Qt and renounce to all the goodies<br>
> that were added in later versions.<br>
> <br>
> Ciao,<br>
>   Alberto<br>
> _______________________________________________<br>
> Development mailing list<br>
> <a href="mailto:Development@qt-project.org" target="_blank">Development@qt-project.org</a><br>
> <a href="https://lists.qt-project.org/listinfo/development" rel="noreferrer" target="_blank">https://lists.qt-project.org/listinfo/development</a><br>
<br>
<br>
-- <br>
Albert Astals Cid | <a href="mailto:albert.astals.cid@kdab.com" target="_blank">albert.astals.cid@kdab.com</a> | Software Engineer<br>
Klarälvdalens Datakonsult AB, a KDAB Group company<br>
Tel: Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)<br>
KDAB - The Qt, C++ and OpenGL Experts<br>
<br>
_______________________________________________<br>
Development mailing list<br>
<a href="mailto:Development@qt-project.org" target="_blank">Development@qt-project.org</a><br>
<a href="https://lists.qt-project.org/listinfo/development" rel="noreferrer" target="_blank">https://lists.qt-project.org/listinfo/development</a><br>
</blockquote></div>