Динамический репаратиг в qml

Я хочу изменить динамически тип элемента 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 ответа

Когда я хочу сделать "куколку", я использую что-то подобное

Прямоугольник{

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)

...}

и, когда я хочу показать всплывающее окно выбора.

Я тоже использую эту функцию (find_superparent) в создании / уничтожении динамических компонентов...

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

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

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

Другие вопросы по тегам