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
}
}
// ...