Я загружаю QML из ZIP-архивов во время выполнения, и у меня есть реализация декомпрессора на C++, который динамически читает архивы и предоставляет контент без каких-либо временных файлов. Этот небольшой фрагмент представляет механизм, и он прекрасно работает в Qt5, но совершенно не работает в Qt6:
Код: Выделить всё
window.qml:32: Error: Qt.createQmlObject(): failed to create object:
file://other.qml:7:9: Type MyComp unavailable
file://other.qml: No such file or directory
Код: Выделить всё
window.qmlКод: Выделить всё
import QtQuick 2.15
import QtQuick.Window 2.15
Window {
width: 300
height: 300
visible: true
function qmlFromZip() {
return `
import QtQuick 2.15
Item {
anchors.fill: parent
component MyComp: Rectangle {
color: "red"
radius: 10
}
MyComp {
anchors.centerIn: parent
width: 100
height: 100
color: "green"
}
}
`;
}
Component.onCompleted: {
const obj = Qt.createQmlObject(qmlFromZip(), this, "other.qml");
obj.anchors.centerIn = this;
}
}
Интересно, является ли это ошибкой Qt6, поскольку я не смог найти это изменение, упомянутое в документации Qt.createQmlObject() при сравнении Qt5 и Qt6. В противном случае было бы здорово увидеть где-нибудь официальное заявление об этой поломке.
Подробнее здесь: https://stackoverflow.com/questions/798 ... components
Мобильная версия