0

以下のような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_surfacenew_parent_surface親をこのように変更して、これらの両方のアイテムを描画しnew_parent_surfaceます。

quick_item_1->setParentItem(new_parent_surface);
quick_item_2->setParentItem(new_parent_surface);

これは、それらを新しい親 QQuickItem に描画する目的でうまく機能します。私は と の両方を取得quick_item_1quick_item_2ますnew_parent_surface。は UI に描画されていnew_parent_surfaceませんが、grabToImageを使用してスナップショットを撮るとnew_parent_surface、それらに描画された 2 つのアイテムが表示されます。ここまでいい。

ただし、&の位置が正しくありません。元の親アイテムを配置したのと同じように配置したいと思います。パーセンテージ計算を行って、元の親に描画されたのと同じ方法で配置を試みることができますが、この配置を新しい親に変換する QQQuickItem または Qt API はありませんか?quick_item_1quick_item_2

mapToItem のようなQQuickItemのマッピング API を調べて、このように試してみました。

quick_item_2->mapToItem(new_parent_surface, quick_item_2->position());

しかし、ポジショニングはまだ正しくありません。

では、setParentItemを実行した後、 QQuickItem の位置をその新しい親 QQuickItem にマップするにはどうすればよいですか?

4

1 に答える 1