可以使用Qt.createComponent(filename)
可以使用Qt.createQmlObject(string)
可以通过Component {...}
但是可以从字符串创建QML组件吗?我的意思是,为了使用Qt.createComponent(filename)
而没有尽力将其保存为临时文件?
编辑:为了澄清,我已经有了这个示例表单中的组件:
import QtQuick 2.0
Rectangle {
width: 100
height: 100
color: "red"
}
所以我需要从该字符串创建一个组件而不实例化它。我不能简单地将字符串包装在"Component {" + string + "}"
中,因为无法在组件内声明导入。一种解决方案是使用复杂的解析来在第一个元素之前和导入之后插入组件,但它不会让我成为最优雅的解决方案。
答案 0 :(得分:1)
使用Qt.createQmlObject(string)
。它创建了一个对象,而不是原型。
Window {
id: mainWindow
visible: true
width: 600
height: 400
Component.onCompleted: {
var str = '
import QtQuick 2.3;
Component {
Text {
text: "Hello, world!";
anchors.fill: parent;
horizontalAlignment: Text.AlignHCenter;
verticalAlignment: Text.AlignVCenter;
}
}';
var component = Qt.createQmlObject(str,mainWindow);
var object = component.createObject(mainWindow);
}
}