我有2 QQuickItem
s如下所示,我可以使用QMLEngine
這樣在C++端獲取。如何將QQuickItem的位置轉換爲其新父項
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的目標。我在new_parent_surface
上得到quick_item_1
& quick_item_2
。即使new_parent_surface
未在UI上繪製,但如果使用grabToImage的拍攝快照,我可以看到在它們上繪製的2個項目。細到這裏。
然而定位quick_item_1
& quick_item_2
是不正確的。我想將它們放置成與他們放置原始父項目的方式類似。我可以做一些百分比數學運算&嘗試將它們放置在原始父級上,但是不存在用於將此定位轉換爲新父級的QQQuickItem或Qt API?
我試圖查看QQuickItem的映射API,如mapToItem &這樣嘗試它們。
quick_item_2->mapToItem(new_parent_surface, quick_item_2->position());
但是定位依然不正確。
那麼,如何我可以在做一個setParentItem後將QQuickItem的位置映射到它的新父母QQuickItem?
'QQuickItem'有很多'mapTo *()'和'manFrom *()'函數。順便說一句,下一次只是把你的代碼放在這裏,而不是解釋它。 – folibis
瞭解@folibis。由於代碼中出現其他事情,我認爲描述相關問題會更好。順便說一句,如果我嘗試帶有一些值的'setPosition',那麼當然我可以像以前一樣定位'quick_item_2'。但我有興趣知道是否有推薦的QQuickItem API來執行此操作 –