以下のような2 つQQuickItem
の s があり、このようなものを使用して 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
。は UI に描画されていnew_parent_surface
ませんが、grabToImageを使用してスナップショットを撮るとnew_parent_surface
、それらに描画された 2 つのアイテムが表示されます。ここまでいい。
ただし、&の位置が正しくありません。元の親アイテムを配置したのと同じように配置したいと思います。パーセンテージ計算を行って、元の親に描画されたのと同じ方法で配置を試みることができますが、この配置を新しい親に変換する QQQuickItem または Qt API はありませんか?quick_item_1
quick_item_2
mapToItem のようなQQuickItemのマッピング API を調べて、このように試してみました。
quick_item_2->mapToItem(new_parent_surface, quick_item_2->position());
しかし、ポジショニングはまだ正しくありません。
では、setParentItemを実行した後、 QQuickItem の位置をその新しい親 QQuickItem にマップするにはどうすればよいですか?