Multiple directories in QML project
-
Hello qt devs.I am kinda new to this, but I really like QML so I decided to use Qt and QML for my next project.
I plan on making a complex and relatively big application using QML and C++ (if neccessary)
I plan it to run on Linux, Mac and Windows and also eventually Android (when QT neccessitas gets more stable).
There will be a directory called widgets where I will have my widgets .qml file (more files , Button.qml,TextInput.qml...)
There will be a directory called dialogs,src...
Now onto my problem. I have not really done much stuff really, this post is just a way to stop bashing qml and qt later when things go wrong and there is a lot of code :D
Here is the info I need :
in a .qml source file
import "src/code.js" as SomeNamespace
How will that behave on windows where paths are escaped using \ ?
Then if I have widgets/Button.qml
how can I import that into my dialogs/SomeDialog.qml
Will import "widgets/Button.qml" as Button work
and will it work on windows.
BTW - How to add new directories in Qt Creator?
That's all that comes to my mind now.Thanks for helping. -
Hi,
Regarding relative imports: we transform paths into platform-canonical form, so doing:
import "src/code.js" as JS
should just work on all platforms.If you have project/widgets/Button.qml and project/dialogs/SomeDialog.qml you should be able to do:
import "../widgets"
inside SomeDialog.qml to gain access to all of the QML document-defined types in the widgets subdir.Regarding directories in QtCreator: it is important to note that QtCreator doesn't "see" directories. What it sees are Qt projects and subprojects (which are defined in .pro or .pri files).
So, if you want a tree of "subdirectory-like" separations in QtCreator, you should use qmake .pro files (or .qmlproject files for pure-qml projects).
example:
project/myapplication.pro:
#start
TEMPLATE=subdirs
CONFIG=ordered
SUBDIRS += widgets dialogs
#endproject/widgets/widgets.pro:
#start
QT += widgets gui quick qml
HEADERS += someCppWidget.h
SOURCES += someCppWidget.cpp
OTHER_FILES += MyButton.qml
#endproject/widgets/dialogs.pro
#start
QT += widgets gui quick qml
HEADERS += someCppDialog.h
SOURCES += someCppDialog.cpp
OTHER_FILES += MyDialog.qml
#endetc.
Cheers,
Chris. -
Thank you for your post.
It is very informative.
I have one more question regarding paths.
When I use c++ what should I use?
Does qmake fix paths automatically like QML runtime does? -