为什么当我使用Loader
加载某个组件时,width
和height
不会从父项中复制?
此代码应显示一个红色矩形但不是
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"
}
}
}
现在,如果我取消注释width
和height
并对anchors
部分进行评论,那么它将正常运行:
Rectangle {
width: 100;
height: 40;
//anchors.fill: parent
color: "red"
}
bin/qmlscene
的输出:
那么,这里的问题是什么,它是否认为属性是由property binding
系统传播的?或Loader
是否遗漏了某些功能?
答案 0 :(得分:1)
默认情况下,加载器没有被内容填充,默认情况下它也没有假定内容的大小。
您可以将加载程序大小绑定到内容项大小,也可以将内容项大小绑定到加载程序大小。
目前,您的装载机的宽度和高度均为零。因此填充它的任何物品也将具有零尺寸。为加载程序设置另一个anchors.fill: parent
,或者只使用Item
替换Loader
,因为前者是多余的。