在收集StackOverflow上几个帖子的各种信息后,我设法从一些Qt C ++代码动态创建我的QML组件。
不幸的是,在创建之后,QQmlComponent :: setProperty方法似乎没有任何效果。我可以看到红色矩形,但它没有进入我想要的x / y位置。
任何人都有任何想法?
“x:xPos”“y:yPos”属性绑定可能有问题吗?
QML代码:
import QtQuick 2.2
Rectangle {
property int xPos: 0;
property int yPos: 0;
width: 100
height: 100
x: xPos
y: yPos
color: "red";
radius: 10
}
C ++代码(m_view是QQuickView):
QQuickItem *twoDView = qobject_cast<QQuickItem*>(m_view->rootObject()->findChild<QObject *>("myView"));
QQmlComponent myComponent(m_view->engine(), QUrl("qrc:/myItem.qml"));
QQuickItem *newView = qobject_cast<QQuickItem*>(myComponent.create());
newView->setParentItem(twoDView);
myComponent.setProperty("xPos", x);
myComponent.setProperty("yPos", y);
答案 0 :(得分:1)
好的,发帖之前没有努力。对不起!
解决方案是调用newView的setProperty而不是myComponent!
newView->setProperty("xPos", x);
newView->setProperty("yPos", y);
技巧