qml中的动态reparentig

时间:2014-09-25 09:39:51

标签: qml reparenting

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

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
    }
}}

2 个答案:

答案 0 :(得分:0)

你想要达到什么目标?

您必须明白,当您将Window“转换”为弹出窗口时,对象的实际类型不会改变。您只设置了一个标志,这恰好为您的窗口提供了一个弹出行为。至于动态改变QML对象的类型,我认为它甚至不可能,而且我没有看到它的重点。

答案 1 :(得分:0)

当我想制作'pupup'时,我会使用类似的东西

矩形{

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)

... }

并且,当我想要显示弹出窗口时 picker.visible =真

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

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