如何将QQuickItem的位置转换为新的父级

时间:2017-09-02 16:12:56

标签: qt qml qquickitem

我有两个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?

1 个答案:

答案 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