2014-09-25 33 views
0

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

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

所以标题是关于重新养育,身体回合动态变化的类型和代码是关于没有按什么没有任何意义...... – dtech 2016-10-04 16:29:02

回答

0

你想达到什么目的?

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

+0

Yoann,我绝对明白在我的例子中完成的事情。但问题是如何做到这一点,而不使用任何标志。 – Kirill 2014-09-25 10:48:37

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 = true

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

这种方法可行。我不知道是否存在更好的方法...