QML Row元素拒绝工作

时间:2015-05-07 13:09:32

标签: qml qtquick2

我知道我应该使用Row,Column等而不是使用ID锚定的项目来使我的代码更简单,更容易阅读。但他们大部分时间拒绝工作。例如,在这种情况下:

import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Layouts 1.1

ListView {
    id: listView
    anchors.fill: parent
    topMargin: spacing
    anchors.leftMargin: spacing
    anchors.rightMargin: spacing
    clip: true
    spacing: 0.5 * pxPermm

    model: SqlQueryModel {}
    delegate: Rectangle {
        id: delegateItem
        color: "white"
        height: 14 * pxPermm
        width: listView.width
        clip: true
        Row {
            id: row
            anchors.fill: delegateItem
            spacing: pxPermm
            Image {
                height: row.height
                width: height
                source: "qrc:/resources/ryba.jpg"
                fillMode: Image.PreserveAspectCrop
            }
            Item {
                id: textItem
                height: row.height
                Label {
                    anchors.left: textItem.left
                    anchors.top: textItem.top
                    text: nazov
                    font.bold: true
                }
                Label {
                    anchors.left: textItem.left
                    anchors.bottom: textItem.bottom
                    text: cas
                }
            }
        }
    }
}

这会在列表视图的委托中的图像顶部显示两个标签。正如您所料,图像右侧不是两个标签。但是,此代码有效:

import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Layouts 1.1

ListView {
    id: listView
    anchors.fill: parent
    topMargin: spacing
    anchors.leftMargin: spacing
    anchors.rightMargin: spacing
    clip: true
    spacing: 0.5 * pxPermm

    model: SqlQueryModel {}
    delegate: Rectangle {
        id: delegateItem
        color: "white"
        height: 14 * pxPermm
        width: listView.width
        clip: true
        Row {
            id: row
            anchors.fill: delegateItem
            spacing: pxPermm
            Image {
                height: row.height
                width: height
                source: "qrc:/resources/ryba.jpg"
                fillMode: Image.PreserveAspectCrop
            }
            Label {
                text: nazov
                font.bold: true
            }
        }
    }
}

当然,我需要在委托中显示多个标签。我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

事实证明,Item默认为零宽度。设置宽度后代码正常工作:

            Item {
                id: textItem
                height: row.height
                width: childrenRect.width
                // labels etc
            }