我在c ++代码中有QAbstractListModel,并通过
将它连接到Buton的qml GridViewQQmlApplicationEngine engine;
QQmlContext* context = engine.rootContext();
context->setContextProperty("keyboardModel", _keyboardModel);
主要目标是在c ++代码中获取按钮的全局坐标。为此,我找到了具有QQuickItem::childItems()
函数的按钮,并获得了mapToGlobal()
的最终坐标。
现在,当我改变c ++模型时,qml GridView也发生了变化。但是,当层次化的QQuickItem树完全刷新时(我需要正确工作QQuickItem::childItems()
)
GridView的信号onAdd,当新模型具有相同数量的元素时,删除不起作用。 GridView的信号onModelChanged仅在我连接另一个模型时触发,而不是在我更改此模型时触发。
当分层的QQuickItem树完全刷新时,是否有任何识别信号?或者还有其他方法可以动态获取Qml的对象全局坐标?
答案 0 :(得分:0)
重建GridView时没有信号
但是GridView
有一个属性moving
和信号movementEnded
我希望Button
中的每个GridView
都与此信号相关联。进一步处理Component.onCompleted
的{{1}}。 <{1}}(重新)创建时会触发此信号。
现在在某个C ++对象中公开Button
,它将所需的信息作为参数。比方说,它的签名是
Button
现在在Q_INVOCABLE
你有:
void reportPosition(QString name, int x, int y)
通过这个我们实现了:
Button
保护它们时)这只是这个想法的概述。我现在没有办法测试它,所以可能会有错误。