Qt QML中的警告:在单独的文件中委托并访问模型项属性

Qt QML中的警告:在单独的文件中委托并访问模型项属性,qt,qml,Qt,Qml,下面的代码可以正常工作并正确显示我的项目,但我得到了警告 qrc:/TableDelegate.qml:24: ReferenceError: name is not defined 我认为这是因为ListView试图在模型为空且无法引用项属性时访问该模型。我想我做得不对,但我不知道如何做得更好 所以我的问题是:如何通过正确的方式消除警告 TableDelegate.qml: import QtQuick 2.0 import QtQuick.Layouts 1.1 Item { p

下面的代码可以正常工作并正确显示我的项目,但我得到了警告

qrc:/TableDelegate.qml:24: ReferenceError: name is not defined
我认为这是因为ListView试图在模型为空且无法引用项属性时访问该模型。我想我做得不对,但我不知道如何做得更好

所以我的问题是:如何通过正确的方式消除警告

TableDelegate.qml:

import QtQuick 2.0
import QtQuick.Layouts 1.1

Item {
    property color bgcolor: 'transparent'
    property alias box: rowBox

    height: 40
    width: parent.width
    Rectangle {
        id: rowBox
        anchors.fill: parent
        color: bgcolor
        RowLayout {
            anchors.fill: parent
            Rectangle {
                id: tableNameColumn
                color: 'transparent'
                Layout.fillHeight: true
                Layout.fillWidth: true
                Text {
                    anchors.centerIn: parent
                    color: textcolor
                    text: name                // <--- here is `name`
                }
            }
            // More Columns ...
        }
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
             view.currentIndex = index
        }
    }
}

您可以使用一个
TableDelegate
来突出显示。这是错误的

ListView创建高亮显示项的一个实例,该实例将作为当前选定项的背景绘制,当当前项更改时,它也可能在项之间移动作为过渡。它应该是一个矩形或任何你想使用的东西


在您的示例中,突出显示项是希望访问模型数据的完整委托,但无法访问

您使用一个
TableDelegate
作为突出显示。这是错误的

ListView创建高亮显示项的一个实例,该实例将作为当前选定项的背景绘制,当当前项更改时,它也可能在项之间移动作为过渡。它应该是一个矩形或任何你想使用的东西


在您的示例中,突出显示项是希望访问模型数据的完整委托,但无法访问

最简单的是,检查值是否定义如下:
text:
最简单的是,检查值是否定义如下:
text:
确实如此!非常感谢你!我真的误解了亮点属性!确实是这样!非常感谢你!我真的误解了亮点属性!
// ...

ListModel {
    id: model
}

ListView {
    id: view
    model: model
    anchors.fill: parent
    highlight: delegate_highlighted
    highlightFollowsCurrentItem: true
    delegate: delegate
}

Component {
    id: delegate
    TableDelegate {
        bgcolor: 'transparent';
    }
}

Component {
    id: delegate_highlighted
    TableDelegate {
        bgcolor: 'lightsteelblue'
        box.border.color: 'black'
        box.radius: 3
    }
}

// ...