在QML中,有没有办法获取任何视觉对象的顶级Window
? 最好不要通过视觉parent
层次结构递归。
我正在尝试查找顶级窗口的几何形状,以便后代对象可以检测它们的边界是否已越过窗口的边界。
所有Item
都附加了Window
属性。哪些取决于Qt版本。例如 Window.width
是当前顶级窗口/视图宽度。
你可以用myItem.Window
得到一个特定的Item
Window
;
使用Qt 5.7+,您甚至可以通过Window.window
访问所有Window
属性。
查看文档:http://doc.qt.io/qt-5/qml-qtquick-window-window.html#attached-properties
目前的答案是"否"。这看起来像是可以发送给QML团队的功能建议。
我最终将自己的C++类导出到 QML。
ItemWithWindow.h:
#include <QQuickItem>
class ItemWithWindow : public QQuickItem
{
Q_OBJECT
public:
Q_PROPERTY( QQuickWindow* window READ window NOTIFY windowChanged )
signals:
void windowChanged();
};
(像往常一样在qmlRegisterType<ItemWithWindow>( uri, 1, 0, "ItemWithWindow" );
注册)