为什么 Loader 不设置父级的宽度和高度?
Why doesn't Loader sets parent's width and height?
为什么,当我使用 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
遗漏了某些功能?
默认情况下,加载器不被内容填充,也不假定内容的大小。
您可以将加载程序大小绑定到内容项大小,或者将内容项大小绑定到加载程序大小。
目前,您的加载程序的宽度和高度为零。所以填充它的任何项目也将具有零大小。为加载程序准备另一个 anchors.fill: parent
,或者将 Item
替换为 Loader
,因为前者是多余的。
为什么,当我使用 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
遗漏了某些功能?
默认情况下,加载器不被内容填充,也不假定内容的大小。
您可以将加载程序大小绑定到内容项大小,或者将内容项大小绑定到加载程序大小。
目前,您的加载程序的宽度和高度为零。所以填充它的任何项目也将具有零大小。为加载程序准备另一个 anchors.fill: parent
,或者将 Item
替换为 Loader
,因为前者是多余的。