使用qt 5.2,我试图动态添加一个简单的按钮:
ApplicationWindow
{
id: appWindow
width: 640
height: 420
minimumHeight: 400
minimumWidth: 600
function addButton() {
var obj = Qt.createComponent("Button.qml");
if (obj.status == obj.Ready)
{
var button = obj.createObject(appWindow);
button.color = "red";
button.width=50;
button.height=80;
button.x=50; button.y=50;
}
}
Button {
anchors.centerIn: parent;
text: "ok";
onClicked: {
addButton();
}
} ...
但是在createComponent之后我总是得到:
QQmlComponent:组件未就绪
怎么了?
答案 0 :(得分:2)
为了确保组件准备就绪,最好的方法就是在组件对象内部的QML部分内声明它,以便它与文件的其余部分同时预加载:
ApplicationWindow {
id: appWindow;
Component {
id: myButton;
Button { }
}
function addButton () {
var button = myButton.createObject (appWindow, {
"color" : "red",
"width" : 50,
"height" : 80,
"x" : 50,
"y" : 50
});
}
...
}
正如您所看到的,我还冒昧地向您展示了一次性使用良好属性直接创建对象的语法,而不是以旧学校方式手动设置它们。更干净的代码,可能更高效。