[Interest] QML: support both Qt5 and Qt6

Alexander Dyagilev alervdvcw at gmail.com
Wed Sep 8 13:46:41 CEST 2021

OK, I did so:


import QtQuick 2.0
import "./qt5"
import "./qt6"



/qml_ui/qt5compat/qt5/MessageDialog.qml :

import QtQuick 2.0
import QtQuick.Dialogs 1.3

     readonly property int buttonOk: StandardButton.Ok
     readonly property int buttonCancel: StandardButton.Cancel
     property int buttons: buttonOk
     standardButtons: buttons


import QtQuick 2.0
import Qt.labs.platform 1.1 as QtLabs

     readonly property int buttonOk: MessageDialog.Ok
     readonly property int buttonCancel: MessageDialog.Cancel
     buttons: buttonOk

Now, the only I need to use MessageDialog in both Qt5 and Qt6 is to:

import "./qt5compat"

MessageDialog {

   buttons: buttonOk | buttonCancel


And I have two additional resource files. One is included for Qt5 and 
contains files inside of /qml_ui/qt5compat/qt5 folder and the similar 
one for Qt6.

One note also: under Qt5, /qml_ui/qt5compat/qt6 folder must still exist. 
The same for Qt6: /qml_ui/qt5compat/qt5 must exist. To achieve this, 
I've just added to blank files to common resource file.


On 9/7/2021 11:13 PM, Alexander Dyagilev wrote:
> Hello,
> We would like to migrate to Qt6. However, we still need to be able to 
> build our project with Qt5 to continue supporting Windows 7 OS (15% of 
> our users are still using it).
> For now, I've managed to make C++ part support both Qt6 and Qt5.
> However, it seems that QML part is not so easy.
> For example, we do use MessageDialog component. In Qt5, it requires 
> import QtQuick.Dialogs 1.3, and in Qt6 - import Qt.labs.platform 1.1.
> Is it possible to import different modules depending on the current Qt 
> version?

More information about the Interest mailing list