我有 2 s,如下所示,我可以使用这样QQuickItem
的方法在 C++ 端获取。QMLEngine
QQuickItem * quick_item_1 = m_qml_engine->rootObjects()[0]->findChild<QQuickItem*>("quickitem1");
QQuickItem * quick_item_2 = m_qml_engine->rootObjects()[0]->findChild<QQuickItem*>("quickitem2");
注意: quick_item_1
的直接父级不同&quick_item_2
的直接父级也不同。但是它们都在同一个应用程序窗口中绘制到不同的直接父级中。
我在不同的QQuickItem
. 让我们称之为new_parent_surface
。new_parent_surface
我通过将它们的父项更改为new_parent_surface
这样来绘制这两个项目。
quick_item_1->setParentItem(new_parent_surface);
quick_item_2->setParentItem(new_parent_surface);
这对于将它们绘制在新的父 QQuickItem 上的目标很好。我得到了两者quick_item_1
&quick_item_2
绘制new_parent_surface
。即使new_parent_surface
没有在 UI 上绘制,但如果我使用grabToImage of拍摄快照new_parent_surface
,我可以看到在它们上绘制的 2 个项目。到这里为止很好。
但是&的定位是不正确的。我想将它们定位为类似于它们放置原始父项的方式。我可以做一些百分比数学并尝试以与在其原始父级上绘制相同的方式定位它们,但没有 QQQuickItem 或 Qt API 可以将此定位转换为新父级吗?quick_item_1
quick_item_2
我试图研究 QQuickItem 的映射 API,如mapToItem并像这样尝试它们。
quick_item_2->mapToItem(new_parent_surface, quick_item_2->position());
但定位仍然不正确。
那么,在执行setParentItem之后,如何将 QQuickItem 的位置映射到其新的父 QQuickItem 中?