[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:
/qml_ui/qt5compat/MessageDialog.qml:
import QtQuick 2.0
import "./qt5"
import "./qt6"
MessageDialog
{
}
/qml_ui/qt5compat/qt5/MessageDialog.qml :
import QtQuick 2.0
import QtQuick.Dialogs 1.3
MessageDialog
{
readonly property int buttonOk: StandardButton.Ok
readonly property int buttonCancel: StandardButton.Cancel
property int buttons: buttonOk
standardButtons: buttons
}
/qml_ui/qt5compat/qt6/MessageDialog.qml:
import QtQuick 2.0
import Qt.labs.platform 1.1 as QtLabs
QtLabs.MessageDialog
{
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