Hi Mike,
in the meantime I made some progress and got my projects (with QML and
CPP files organized in subdirectories) working without
NO_RESOURCE_TARGET_PATH :)
Also QML_ELEMENT is working, only QT_QML_SINGLETON_TYPE isn't yet.
more details: https://bugreports.qt.io/browse/QTBUG-111763
next topic: looking for a way to refactor ContextProperties into
QML_SINGLETON with c++ ownership
so step-by-step ;-)
ekke
Am 18.02.24 um 14:07 schrieb ekke:
Hi Mike,
thanks for your great answer.
I can second your advices.
ekke
Am 17.02.24 um 01:00 schrieb Mike Trahearn via Interest:
My second advice is more for Ulf - despite your best efforts to
educate people in how QML modules have changed the way we should
think about our QML organisation since Qt 5, people still have
trouble grasping these points:
a) what is a QML module anyway? You say whaaaat? Yes, people are
still on Qt5 with a Qt5 mindset. It took me ages to work out how to
retrain my thinking - and it does for others too. But I would add it
is well worth it and does make life a lot easier when you set it up.
Alexandra Betouni's recent #QtStories article leans into exactly this
point (it's a great read and I absolutely echo her observations and
sentiments).
b) the thing Ulf and I spoke about in Berlin, which was the very
basic fundamental structure of a relatively simple app where all the
modules are defined under the "recommended" structure which is
guaranteed to work without any fiddling. This is a great starting
point for learners, new projects and so on. However...
c) For many people, like those here, are not starting from an ideal
place of legacy and in Ulf's words, already using and relying on
"degenerate modules".
While this is unfortunate, it happens and Qt5 allowed that to happen.
So when we move things to Qt6 we have a number of steps to consider.
1) moving to CMake
2) formally defining the QML modules in CMake
3) fixing all the QML so it works within the rules
4) going back to CMake to fix the module definitions according to the
*allowed* additional properties having considered their exacting
requirements and rationale.
This has been my own experience so I know what I'm talking about and
understand both the pain and the frustration and have vented myself
at "why doesn't it work like I expect" and poor Ulf has copped my
wrath on more than on occasion. However, I am educated now and we are
still friends.
d) Ulf write a great little blog series about QML Modules back around
Qt6.2. But when you look at those now, some of the information there
is dated although the principles are sound.
So Ulf, with your inimitable fashion of freely advising not to use
foot guns and with your unique sense of humour, would you be prepared
to write an updated blog - yay verily may I suggest work with Ash
Walton and get it up on the Qt Academy?
I would suggest and recommend it as absolute mandatory reading for
anyone. I'd even go as far to say "did you do that course" as a first
response.
There would be some simple steps to cover based on just reworking
that blog series:
1 - how it used to be in Qt5 (and why it needed to change)
2 - What is a QML module
3 - Plugin and Backing targets (most confusing for some) and when to
link to what given static or shared configurations
4 - simple application structure
5 - a nod to the resource prefix and the new load component main.cpp
bootstrap.
6 - a reasoned example (image provider) where you have to use one of
the NO options and how a "do it yourself" plugin class looks like.and
works in practice.
7 - alternative workarounds for where your source structure cannot
match the default expected structure, but how to at least exchange
bullets for liquorice in your foot gun if you have to (like me - I
don't like the taste, but I don't eat with my feet).
8 - the code model is gleaned from the build folder NOT the source
folder.
9 - you don't need to write qmldir or qmltypes
10 - how to declare singletons and internal types.
11 - if you are feeling sadistic you could also cover singletons and
ownership but don't be cruel.
There's obviously scope for breaking this up into a learning path
with several short courses inside building on the last.
I really think this would be gold in the hands of the reader in
helping them get past this quite large code and paradigm change into
a world of much more power, flexibility and productivity.
I do hope you get your project into the shape you need. It does sound
likeĀ but of a pickle at the moment but it is not going to be
difficult to get you straight so do not fear or get frustrated.
We will get you there!
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest