Am 16.02.24 um 21:06 schrieb Ulf Hermann via Interest:
Hi Ekke,

...
This is why it's generally a good idea to make the implicit import the same as the module a component belongs to.

I have understood, though, that nobody wants to follow this rule. I'll come up with some technical solution that allows you to declare either a module spanning multiple directories or a collection of modules, each with its own directory. with a single CMake function call. The earliest possible version for that to surface in is 6.8, though.

best regards,
Ulf

Hi Ulf,

thanks taking the time and explaining. Probably my problem is, that (in my Qt 5.15 projects) I never thought about "Modules".

I simply grouped my qml files and put similar ones into directories.

Would be great to get a technical solution to span multi directories in 6.8

BTW: perhaps I have overlooked it, but I never found a warning in all the blogs and docs, that qml files organized in directories will be problematic if used in Qt 6 QML Modules. Also didn't found recipes HowTo use in-directories-grouped-qml-files with qt_add_qml_module.

I'm a single independent mobile business app developer and I have to support up to 20 apps I ported from 5.15 to 6.6. Some of the apps are very complex and grown over 6+ years from the first days of QQC2 - beta. With help from JP Nurmi and Mitch Curtis I got the first apps running - development before was BB10 Cascades/Qt 4.8. My customers love the apps and I love Qt. Porting my apps from 5.15 to 6.6 was much more work as expected - took 9 months. https://t1p.de/ekkeChecklist  From my feeling it was harder as Cascades/4.8 ->5.0 ;-)

I got all my projects compile and run with 6.6 and QMake. Still some 5.15 projects I cannot deliver  because of blocking bugs :(

Now I'm working on QMake -> CMake - again much work. Android apps nearly ready, iOS apps work-in-progress. Unfortunately ATM there's no doc about Qt-recommended-way-to-use-cmake-for-android-ios-apps to compile, build, deploy to device and GooglePlay/AppStore.

Back to CMake and qt_add_qml_module:

Porting 20 apps I have to go step-by-step and the first step is getting the apps compile and run with CMake.

The only way seems to be to load from URL instead from Module and to deal with the foot gun using RESOURCE_PREFIX and NO_RESOURCE_TARGET_PATH:

engine.load(QUrl(QStringLiteral("qrc:/qml/Main.qml")));

qt_add_executable(${MY_APP}
    cpp/main.cpp
)
qt_add_qml_module(${MY_APP}
    URI Main_Module
    QML_FILES
        ${my_qml_files}
    SOURCES
        ${my_cpp_files}
    RESOURCE_PREFIX /
    NO_RESOURCE_TARGET_PATH
    RESOURCES
        ${my_image_files}
        ${my_data-assets_files}
)

in my code now still is working:

import "../popups" etc

Loader ... source "../pages/ThePage.qml"

qrc:/images/...

As soon as all Apps are running on Android and iOS, I'll take the next step to remove/refactor from cpp code some

context->setContextProperty(...)

and also from all my QObject* Entities/DTOs:

qmlRegisterType(...)

Then I'll have much work in QML files to refactor hundreds of QML Connections()-syntax and also uncount missing id's...

Never have thought that the port from 5.15 to 6.6 would be so hard. I have to admit - there were days when I thought about whether Flutter would be an easier way, but I like Qt so much ;-)

To better understand my project structure, see below a more detailed one together with some quanties from a medium sized app.

thx

ekke

QML:
there around 230 qml files

/qml/Main.qml
/qml/bt/   (only if app supports BT LE)
        BTSettingsGeneralScan.qml
        ... (15 qml files - BluetoothLE)
/qml/common/
        FloatingActionButton.qml
        ... (55 qml files)
/qml/navigation/
        ScheduleNavigation.qml
        ... (20 qml files)
/qml/pages/
        SchedulePlanListPage.qml
        ... (80 qml files)
/qml/photo/    (only if app uses QML Camera)
        CapturePhotoPage.qml
        ... (15 qml files)
/qml/popups/
        PopupMissionDone.qml
        ... (40 qml files)
/qml/tabs/
        TextTabBar.qml
        ... (5 qml files)

RESOURCES (images and data-assets):

there are 120 icons
    in black and white, 18px, 24px, 63px, 48px
    and 4 densities, so around 3.800 single files
/images/...
        add.png
        a...@2x.png
        a...@3x.png
        a...@4x.png

/data-assets/mySettingsData.json
            ...

TRANSLATIONS:
translations/xxx.ts
             xxx_de.ts
             xxx_en.ts







_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to