如何访问Loader的sourceComponent中的QML对象?

Aqu*_*irl 9 qt qml qtquick2

我可能需要读取或写入一些的性能LoadersourceComponent一些外部的功能.

访问x这个对象内部属性的方法LoadersourceComponent什么?

 import QtQuick 2.0

 Item {
     width: 200; height: 200

     Loader {
         anchors.fill: parent
         sourceComponent: rect
     }

     Component {
         id: rect
         Rectangle 
         {
             width: 50
             height: 50
             color: "red"
             property int x
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)

Gre*_*cKo 14

当您需要将内部对象/属性暴露给外部时,您应该为它创建一个别名.

import QtQuick 2.0

 Item {
     width: 200; height: 200
     property alias loaderItem: loader.item

     Loader {
         id: loader
         anchors.fill: parent
         sourceComponent: rect
     }

     Component {
         id: rect
         Rectangle 
         {
             width: 50
             height: 50
             color: "red"
             property int x
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)

  • DTech:区别在于封装:通过将 Item 作为根组件,您可以选择要公开的新组件的哪些属性。如果您将 loader 设为根组件,那么您将公开所有 loader 属性,而不仅仅是项目,这可能不是您想要的。 (2认同)