为什么装载机没有设置父母的宽度和高度?

时间:2017-01-08 22:59:52

标签: qt qml qt5 qtquick2

为什么当我使用Loader加载某个组件时,widthheight不会从父项中复制?

此代码应显示一个红色矩形但不是

import QtQuick 2.7
import QtQuick.Controls 2.1
import QtQuick.Controls.Material 2.0
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.3

Pane {
    width: 400
    height: 300
    Item {
        anchors.fill: parent

        Loader {
            sourceComponent: redsq
        }
    }
    Component {
        id: redsq
        Rectangle {
            //width: 100;
            //height: 40;
            anchors.fill:  parent
            color: "red"
        }
    }
}

现在,如果我取消注释widthheight并对anchors部分进行评论,那么它将正常运行:

Rectangle {
    width: 100;
    height: 40;
    //anchors.fill:  parent
    color: "red"
}

bin/qmlscene的输出:

Loader works correctly

那么,这里的问题是什么,它是否认为属性是由property binding系统传播的?或Loader是否遗漏了某些功能?

1 个答案:

答案 0 :(得分:1)

默认情况下,加载器没有被内容填充,默认情况下它也没有假定内容的大小。

您可以将加载程序大小绑定到内容项大小,也可以将内容项大小绑定到加载程序大小。

目前,您的装载机的宽度和高度均为零。因此填充它的任何物品也将具有零尺寸。为加载程序设置另一个anchors.fill: parent,或者只使用Item替换Loader,因为前者是多余的。