gpt4 book ai didi

c++ - 无法更改从 C++ 动态创建的 QML 组件的属性

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:37 25 4
gpt4 key购买 nike

在收集了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com