从项目中获取窗口
Posted
技术标签:
【中文标题】从项目中获取窗口【英文标题】:Get Window from Item 【发布时间】:2013-10-28 23:53:09 【问题描述】:在 QML 中有没有办法获得任何视觉对象的*** Window
?最好不要通过可视的parent
层次结构向上递归。
我正在尝试查找***窗口的几何形状,因此后代对象可以检测它们的边界是否已越过窗口。
【问题讨论】:
qt-project.org/doc/qt-5.1/qtquick/qquickitem.html#window @FrankOsterfeld 谢谢,但我对 QML 方面感到好奇。 【参考方案1】:所有Item
s 都有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
【讨论】:
这种方法应该比公认的答案更受欢迎,因为它无需额外的 C++ 代码就可以回答问题。要使用附加的Window.window
属性,请在QML 文件中导入窗口包:import QtQuick.Window 2.2
。
是的! import QtQuick.Window 2.2
必须存在,否则它不起作用,尽管没有运行时错误。【参考方案2】:
我想目前的答案是“不”。这看起来像是可以发送给 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" );
注册)
【讨论】:
以上是关于从项目中获取窗口的主要内容,如果未能解决你的问题,请参考以下文章
从 JComboBox 弹出窗口中获取当前突出显示的项目(未选中的项目)
创建 Visual Studio 扩展时如何获取源代码管理历史记录窗口中的选定项目?