qml中的动态重解析



我想在不重新创建的情况下更改qmlItem的动态类型。在这个例子中,窗口转换为弹出窗口,问题是如何将其转换为qmlItem。

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对象的类型,我认为这是不可能的,我也不认为这有什么意义

当我想制作一个"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)。。。

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

相关内容

  • 没有找到相关文章

最新更新