【发布时间】:2019-05-06 06:22:05
【问题描述】:
我有一个模仿我真实应用的最小应用程序。我有一个带有 listview 列表模型和委托在同一个文件中的主 qml 窗口:
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Component{
id:deleg
CheckBox{
id:chk1
contentItem: Text {
id: txt
anchors.left : parent.indicator.right
anchors.leftMargin: 10
anchors.verticalCenter: parent.verticalCenter
text: dataname
color: "blue"
}}}
ListModel {
id: mod
ListElement{
dataname :'here'
}
ListElement{
dataname : 'there'
}
}
ListView{
id: view
width: 200
height:100
anchors.left: parent.left
anchors.top: parent.top
model: mod
delegate: deleg//CheckDelegate {}
} }
main.cpp 只加载那个 qml 文件,就像一个由 Qtcreator 创建的标准空 Qt Quick 应用程序。
这将显示 2 个带有蓝色文本的复选框,好吧。现在,如果我将委托的代码放在一个名为 ChkDelegate 的新 qml 文件中,并将列表视图委托替换为对 ChkDelegate 的调用(如上面的评论),我面临 1 个问题,没有文本显示,我理解,因为 dataname 没有解决。我试过在括号中使用链接,比如
CheckDelegate { txt : dataname }
但我无法访问 txt 属性,并且 Component 不允许在其中放置额外的属性别名。我该如何解决? 谢谢,
【问题讨论】: