在关于StackOverflow的几篇文章中收集了各种信息之后,我设法通过一些Qt C++代码动态创建了我的QML组件。
不幸的是,在创建之后,QQmlComponent::setProperty方法似乎没有任何作用。我可以看到红色矩形,但它没有达到我想要的x / y位置。
有人有什么主意吗?
也许“x:xPos”,“y:yPos”属性绑定(bind)有问题?
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);
最佳答案
好的,发布前没有努力。不好意思!
解决方案是调用newView的setProperty而不是myComponent!
newView->setProperty("xPos", x);
newView->setProperty("yPos", y);
绝招
关于c++ - 无法更改从C++动态创建的QML组件的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27134820/