Qt 当柱高度计算包含全宽元素时,为什么柱高度计算会中断?

Qt 当柱高度计算包含全宽元素时,为什么柱高度计算会中断?,qt,qml,qt5,qtquick2,qt5.4,Qt,Qml,Qt5,Qtquick2,Qt5.4,我想知道当行跨越整个宽度时,列高度计算为什么会中断 在以下代码中切换注释以复制: import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Window 2.2 ApplicationWindow { width: 640 height: 480 visible: true Column { id: col anchors { left:

我想知道当
跨越整个宽度时,
高度计算为什么会中断

在以下代码中切换注释以复制:

import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Window 2.2

ApplicationWindow {
    width: 640
    height: 480
    visible: true

    Column {
        id: col
        anchors {
            left: parent.left
            right: parent.right
        }

        Row {
            id: row
            anchors {
                left: parent.left
//                right: parent.right
            }

            Rectangle {
                color: "green"
                width: 20
                height: 20
            }

            Rectangle {
                color: "red"
                width: 30
                height: 30
            }
        }
    }

    Component.onCompleted: {
        console.log("col.height: " + col.height)
        console.log("col.implicitHeight: " + col.implicitHeight)
        console.log("col.width: " + col.width)
        console.log("col.implicitWidth: " + col.implicitWidth)
        console.log("row.height: " + row.height)
        console.log("row.implicitHeight: " + row.implicitHeight)
        console.log("row.width: " + row.width)
        console.log("row.implicitWidth: " + row.implicitWidth)
    }
}
案例1(如上所述):

案例2(
跨越整个宽度):


对我来说,
col.height
col.implicitHeight
是30,
col.width
col.implicitWidth
是640,
row.height
row.implicitHeight
是30,
row.width
是640和
row.implicitWidth
是50。在Mac 10.10.3和Qt 5.4上进行测试,将
行的锚定设置为父级的左/右。我可以使用Qt5.4.2在Ubuntu和Windows上重现上述行为。在任何情况下,我都不会得到640的
col.implicitWidth/width
。要么是0要么是50。谢谢@qcling的提示。我可以在OS X上复制正确的行为。所以我认为这是一个bug。什么版本/OS?在我的Mac电脑上,我得到了与Simon非常相同的结果,但我安装了OSX 10.10.4和Qt 5.4.2@qCring。对我来说,它说
col.height
col.implicitHeight
是30,
col.width
col.implicitWidth
是640,
row.height
row.implicitHeight
是30,
row.width
为640,
row.implicitWidth
为50。在Mac 10.10.3和Qt 5.4上进行测试,将
行的锚定设置为父级的左/右。我可以使用Qt5.4.2在Ubuntu和Windows上重现上述行为。在任何情况下,我都不会得到640的
col.implicitWidth/width
。要么是0要么是50。谢谢@qcling的提示。我可以在OS X上复制正确的行为。所以我认为这是一个bug。什么版本/OS?在我的Mac电脑上,我得到了与Simon非常相同的结果,但我安装了OSX 10.10.4和Qt 5.4.2@qCring。对我来说,它说
col.height
col.implicitHeight
是30,
col.width
col.implicitWidth
是640,
row.height
row.implicitHeight
是30,
row.width
为640,
row.implicitWidth
为50。在Mac 10.10.3和Qt 5.4上进行测试,将
行的锚定设置为父级的左/右。我可以使用Qt5.4.2在Ubuntu和Windows上重现上述行为。在任何情况下,我都不会得到640的
col.implicitWidth/width
。要么是0要么是50。谢谢@qcling的提示。我可以在OS X上复制正确的行为。所以我认为这是一个bug。什么版本/OS?在我的Mac电脑上,我得到了与Simon完全相同的结果,但我安装了OSX 10.10.4和Qt 5.4.2@qCring。
col.height: 30
col.implicitHeight: 30
col.width: 0
col.implicitWidth: 50
row.height: 30
row.implicitHeight: 30
row.width: 50
row.implicitWidth: 50
col.height: 0
col.implicitHeight: 0
col.width: 0
col.implicitWidth: 0
row.height: 30
row.implicitHeight: 30
row.width: 0
row.implicitWidth: 50