我有TreeView
TreeView {
id: dndView
rowDelegate: Item {
height: 30
}
itemDelegate: dndDelegate
model: myModel
TableViewColumn {
title: "Name"
resizable: true
}
}
及其代表 工作
Rectangle {
id: dragRect
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
color: 'gray'
width: dndView.width - 20
height: 30
Image {
id: menuItemImage
anchors.verticalCenter:parent.verticalCenter
source:model.CommandIcon
}
Text {
anchors.left:menuItemImage.right
anchors.verticalCenter:parent.verticalCenter
text:model.CommandTitle
font.pixelSize: 14
}
C ++文件中的角色:
QHash<int, QByteArray> MenuTreeModel::roleNames() const {
QHash<int, QByteArray> roles;
roles[TitleRole] = "CommandTitle";
roles[IconRole] = "CommandIcon";
return roles;
}
它正确显示文本和图标但是当我展开项目或关闭应用程序时,我有警告:
qrc:/DraggableRectangle.qml:15:TypeError:无法读取属性&#39; CommandIcon&#39; null qrc:/DraggableRectangle.qml:20:TypeError:无法读取属性&#39; CommandTitle&#39; of null *
它有什么问题?
答案 0 :(得分:1)
如果警告仅出现在特定事件上,则可能意味着当QML视图尝试使用时,模型已被销毁或尚未创建。
E.g。如果在关闭应用程序时模型在视图之前被销毁,则视图仍会尝试在短时间内(在它被销毁之前)使用被破坏的对象。
试试这个:
text: model ? model.CommandTitle : ""
答案 1 :(得分:0)
它是代表根目录中的锚点。
anchors.horizontalCenter: parent.horizontalCenter.
您无法锚定TreeView代表的左侧。删除该行,我敢打赌它会起作用。