2014-09-25 3 views
0

Я хочу изменить динамический тип qml Item без повторного создания. В этом примере окно преобразуется во всплывающее окно, и вопрос заключается в его преобразовании в qml Item.динамический reparentig в 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 
    } 
}} 
+0

Так что название о повторном родительства, тело бой изменения типов динамически и код о чем-то, что Безразлично Не имеет смысла ... – dtech

ответ

0

Чего вы пытаетесь достичь?

Вы должны понимать, что когда вы «преобразуете» свое окно в всплывающее окно, фактический тип вашего объекта не изменяется. Вы устанавливаете только флаг, который, как оказалось, дает вашему окну всплывающее поведение. Что касается динамического изменения типа объекта QML, я не думаю, что это возможно, и я не вижу в этом смысла.

+0

Йоанн, я определенно понимаю то, что сделано в моем примере. Но вопрос заключался в том, как это сделать без использования какого-либо флага. – Kirill

0

Когда я хочу сделать 'pupup', я использую нечто вроде этого

Rectangle {

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) в создании и уничтожении динамических компонентов тоже ...

этот метод работает ... Я не знаю, существует ли лучший способ ...