preprocessing in QML?
-
Hi,
is there any ways to use#ifdef
on macros defined in the pro file?
so to have a single QML file that could have variants depending on the conf.
I'm thinking on a simple example: easily change my Items from a background image to a simple colour or gradient. -
Hi,
is there any ways to use#ifdef
on macros defined in the pro file?
so to have a single QML file that could have variants depending on the conf.
I'm thinking on a simple example: easily change my Items from a background image to a simple colour or gradient. -
it's to avoid to duplicate code...
maybe in JS it's possible to do something similar using a global variable (from JS or C++) but probably more an hassle than a simple#ifdef
-
@J-Hilk
that would be great. Preprocessing statements are really a strength of C++ over all the over languages (even if you can find some stuff in java but not native).
it allows to maintain one single main production branch that can easily be tweaked depending on the client, device or even just you mood :p -
I do this for QT_DEBUG:
#ifdef QT_DEBUG engine->rootContext()->setContextProperty("QT_DEBUG", true); #else engine->rootContext()->setContextProperty("QT_DEBUG", false); #endif
I use this to change the behavior and hide dev tools from the end user. It is not automatic though.
-
I do this for QT_DEBUG:
#ifdef QT_DEBUG engine->rootContext()->setContextProperty("QT_DEBUG", true); #else engine->rootContext()->setContextProperty("QT_DEBUG", false); #endif
I use this to change the behavior and hide dev tools from the end user. It is not automatic though.
@fcarney
how do you access your "QT_DEBUG" variable in QML or JS?
what I'm asking for would be to <define>/<don't define> Items using some kind of preprocessing, not later in JavaScript using the visible property. Do you see what I mean? It's much more efficient as there are no dynamic test, it would be "pre-compiled"... or just escaping for an interpreted language. -
Not exactly the same but you could use QQmlFileSelector to load different files depending on some condition.
You would have a
Foobar.qml
loaded normally but in debug mode+debug/Foorbar.qml
would be loaded instead.