繁体   English   中英

QML中的动态reparentig

[英]dynamical reparentig in qml

我想更改qml项目的动态类型而无需重新创建。 在此示例中,窗口转换为弹出窗口,问题是如何将其转换为qml Item。

ApplicationWindow {
title: qsTr("Hello World")
width: 640
height: 480


Window {
    id: myWindow
    height: 300
    width: 300
    visible: true

    MouseArea {
        anchors.fill: parent
        onDoubleClicked: myWindow.flags = Qt.Popup
    }
}}

您想达到什么目的?

您必须了解,当将“窗口”“转换”为弹出窗口时,对象的实际类型不会改变。 您仅设置一个标志,这恰好使您的窗口具有弹出行为。 至于动态更改QML对象的类型,我什至认为这是不可能的,我也看不出它的意义。

当我想制作一个“小狗”时,我会使用类似的东西

长方形{

id:picker
visible:false
function find_superparent( child_object) {
     var fparent;
     fparent=child_object.parent;
     while(fparent.parent) fparent= fparent.parent;
     return fparent;
    }
Component.onCompleted: picker.parent=find_superparent(picker)

...}

并且,当我想显示弹出选择器时。visible= true

我也在动态组件创建/销毁中使用了此函数(find_superparent)...

这种方法有效...我不知道是否存在更好的方法...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM