Treeview 模型属性在委托警告中为空
Treeview model properties are null in delegate warning
我有一个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: Cannot read property 'CommandIcon' of null qrc:/DraggableRectangle.qml:20: TypeError: Cannot read property 'CommandTitle' of null*
怎么了?
它是您委托根目录中的锚点。
anchors.horizontalCenter: parent.horizontalCenter.
您不能锚定 TreeView 委托的左侧。删除该行,我敢打赌它会起作用。
如果警告仅出现在特定事件上,则可能意味着当您的 QML 视图尝试使用模型时模型已被破坏或尚未创建。
例如如果在关闭应用程序时模型在视图之前被销毁,视图仍会尝试在短时间内使用已销毁的对象(在它也被销毁之前)。
试试这个:
text: model ? model.CommandTitle : ""
我有一个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: Cannot read property 'CommandIcon' of null qrc:/DraggableRectangle.qml:20: TypeError: Cannot read property 'CommandTitle' of null*
怎么了?
它是您委托根目录中的锚点。
anchors.horizontalCenter: parent.horizontalCenter.
您不能锚定 TreeView 委托的左侧。删除该行,我敢打赌它会起作用。
如果警告仅出现在特定事件上,则可能意味着当您的 QML 视图尝试使用模型时模型已被破坏或尚未创建。
例如如果在关闭应用程序时模型在视图之前被销毁,视图仍会尝试在短时间内使用已销毁的对象(在它也被销毁之前)。
试试这个:
text: model ? model.CommandTitle : ""