[Interest] Qt Quick: no qmake support anymore?
Ulf Hermann
ulf.hermann at qt.io
Wed May 3 08:19:57 CEST 2023
> Which begs the question of if it's worth it to bother with QML at all,
> or at least, when there is the option of something else like widgets. It
> has a more complex model of mixing the two worlds, it requires
> additional build system support, and the tooling support is also an
> additional layer that can break more often, even for trivial examples
> like in https://bugreports.qt.io/browse/QTCREATORBUG-24987
> <https://bugreports.qt.io/browse/QTCREATORBUG-24987> (which BTW, has at
> least two people saying that it isn't fixed, and I did not comment
> myself because I stopped caring).
Well, yes, QML is a separate language that needs separate tooling and
build system support. The very least of this is the simple "pack QML
files into qrc" that qmake does, but even that is more than nothing.
With widgets you can indeed write everything in C++, but because it's
C++ it will take longer and contain uglier bugs.
QTCREATORBUG-24987 is actually a symptom of papering over the language
barrier with sloppy heuristics. Qt Creator scans C++ code for instances
of "qmlRegisterType" and assumes all of those are QML type registrations
and will be available to all your QML files. Needless to say that this
is not very accurate, and it stops working once the magic
"qmlRegisterType" does not show up in C++ code anymore. With
qmltyperegistrar processing QML_ELEMENT and friends we get an accurate
way of associating C++ types with QML modules and as a result we know
what C++ types are visible in which QML files. If each QML module is
properly structured and placed in a QML import path, Qt Creator can
resolve modules and types using the actual language semantics rather
than a collection of hacks. That is, it parses the qmltypes file that
belongs to a QML module to figure out what's in there. The CMake build
system support allows you to easily create such well-structured modules.
With qmake you will have a hard time.
best regards,
Ulf
More information about the Interest
mailing list