代码之家  ›  专栏  ›  技术社区  ›  Stefan Monov

如果Loader的sourceComponent项引用其父项,并且我设置“Loader.active=false”,则会出现错误

  •  0
  • Stefan Monov  · 技术社区  · 8 年前

    我的代码:

    import QtQuick 2.6
    import QtQuick.Window 2.2
    
    Window {
        visible: true
        width: 640
        height: 480
    
        Item {
            id: loaderParent
            Loader {
                id: loader
                active: true
                sourceComponent: Item {
                    parent: loaderParent
                    x: parent.x
                }
            }
        }
    
        Item {
            focus: true
            Keys.onPressed: {
                loader.active = false;
            }
        }
    }
    

    当我按下任何键时,我会出现以下错误:

    here .

    2 回复  |  直到 8 年前
        1
  •  0
  •   Stefan Monov    8 年前

    我找到了一个解决方法:代替抓取 parent.x 取来 loaderParent.x 。仍然想知道问题发生的原因。

        2
  •  0
  •   dtech    8 年前

    这个 Loader deleteLater() 这使对象在另一个事件循环周期中保持活动状态。

    这会导致重新评估绑定表达式,因为父表达式现在为null,因此不再可能重新评估。我遇到过更严重的这种行为 described here .

    x: loader.active ? parent.x : someFailsafeValue .

    onParentChanged: console.log(parent)