我有一个qml元素,并希望显示一个(自己的)工具提示元素作为这个元素上方的新窗口。为此,我需要绝对屏幕位置放置新窗口(AFAIK)。(How)我可以访问qml元素的相对位置到主窗口
到目前为止,我的常规方法是使用“mapToItem”来获取相对位置,但我无法进入“主窗口” - 因为问题中的元素位于“Loader”中这种情况又位于另一个Loader中)。
所以我的问题是:是否有可能从动态加载的组件内部访问mainWindow,或者是否有另一种更简单的方法将新的(工具提示)窗口锚定在元素上方?
编辑
mapToGlobal可能将工作太,但我使用Qt 5.6。我终于通过在C++中设置主窗口作为上下文属性来工作:
this-> qmlEngine-> rootContext() - > setContextProperty(“mainWindow”,this-> root);
和QML我可以然后访问主窗口位置(在屏幕上),并添加相对位置处的项目具有类似,所示的窗口:
tooltipWindow.setX(mainWindow.x +item1.mapToItem(item2,0,0).x)
你有一些代码可以玩吗?我认为主要的问题是,'Window'不能从'Item'继承,所以不应该有'mapToItem'或'mapFromItem'-方法可用。 – derM
你真的打算为这个工具提示使用一个新的'Window',或者是在一个普通的'Window'内使用一个新的'Item'吗? – derM
你打算把它作为* mainWindow *还是作为兄弟姐妹的孩子? – derM