0

我想在不重新创建的情况下更改 qml Item 的动态类型。在此示例中,窗口转换为弹出窗口,问题是如何将其转换为 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
    }
}}
4

2 回答 2

0

你想达到什么目的?

您必须了解,当您将 Window “转换”为弹出窗口时,对象的实际类型不会改变。您只需设置一个标志,它恰好给您的窗口一个弹出行为。至于动态改变 QML 对象的类型,我认为这是不可能的,我也看不出它的意义所在。

于 2014-09-25T10:17:53.623 回答
0

当我想制作“小狗”时,我会使用类似的东西

长方形{

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)......

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

于 2016-10-04T15:12:49.300 回答