我有两个QQuickItem
,如下所示,我可以使用QMLEngine
这样在C ++端获取。
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
的直接父母不同&amp; 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
&amp;在quick_item_2
上绘制了new_parent_surface
。即使未在用户界面上绘制new_parent_surface
,但如果我使用new_parent_surface
的{{3}}拍摄快照,我可以看到在其上绘制的2个项目。好到这里。
然而quick_item_1
&amp;的定位 quick_item_2
不正确。我想将它们定位为与原始父项目的位置相似。我可以做一些百分比数学&amp;尝试定位它们的方式与在原始父上绘制的方式相同,但是没有QQQuickItem或Qt API将此定位转换为新的父级吗?
我试着查看QQuickItem的映射API,例如grabToImage&amp;像这样试试它们。
quick_item_2->mapToItem(new_parent_surface, quick_item_2->position());
但定位仍然不正确。
那么,如何可以在执行mapToItem之后将QQuickItem的位置映射到新的父QQuickItem?
答案 0 :(得分:1)
ImageView tempImageView = (ImageView)findViewById(R.id.temp_image_view);
for (int j = 0; j < urls.length-1; j++){
Picasso.with(getApplicationContext()).load(urls[j]).into(tempImageView);
image[j] = tempImageView.getDrawable();
}
的位置始终相对于其父级。并且父级的位置相对于其父级,依此类推。但你总能获得相对或全球的地位。 QML具有很多协调翻译功能。这是一个可以解释这个问题的小例子:
ANT_HOME