C++ 如何使用QStandarItemModel和QML设置/显示图标
我有一个包含文本和图标的简单模型:C++ 如何使用QStandarItemModel和QML设置/显示图标,c++,qt,qml,C++,Qt,Qml,我有一个包含文本和图标的简单模型: QStandardItemModel xmlModel; QStandardItem * item1 = new QStandardItem( QIcon("qrc:/icons/resources/new.png"), "New" ) ; QStandardItem * item2 = new QStandardItem( QIcon("qrc:/icons/resources/open.png"), "Open" ) ; QStandardItem
QStandardItemModel xmlModel;
QStandardItem * item1 = new QStandardItem( QIcon("qrc:/icons/resources/new.png"), "New" ) ;
QStandardItem * item2 = new QStandardItem( QIcon("qrc:/icons/resources/open.png"), "Open" ) ;
QStandardItem * item3 = new QStandardItem( QIcon("qrc:/icons/resources/save.png"), "Save" ) ;
xmlModel.appendRow( item1 );
xmlModel.appendRow( item2 );
xmlModel.appendRow( item3 );
我正在使用QML显示此模型。现在我可以用“显示”来显示文本,用“装饰”来显示图标,但图标没有显示出来
我的QML委托代码如下所示:
Item {
id: root
width: parent.width
height: 30
Image {
id: image
source: decoration
fillMode: Image.PreserveAspectFit
height: parent.height
}
Text {
anchors.left: image.right
anchors.leftMargin: 10
//text: nameRole
text: display
//verticalAlignment: Text.AlignVCenter
anchors.verticalCenter: image.verticalCenter
}
MouseArea {
anchors.fill: parent
onClicked: {
console.log("current index is " + index );
root.ListView.view.currentIndex = index
root.forceActiveFocus()
}
}
}
我在构造函数中设置的
QIcon
是否正确?我假设问题是source
需要一个路径/URL,而模型返回一个QIcon。@Frankosterfield right我可以设置其他文本角色并在qml中读取它,但由于这是QIcon
的问题。QML文档确实说它在QML中的名称是docoration
,但是如何真正使用它呢!看来,装饰
毕竟不能真正用于QML(可能是内存问题)。我通过在模型中存储图像路径来解决这个问题,然后将其设置为image
元素,效果很好。如果没有其他更好的答案,我会将我的代码作为答案发布。我假设问题是,source
需要一个路径/URL,而模型返回一个QIcon。@Frankosterfield right,我可以设置其他文本角色,并在qml中读取它,但因为这是QIcon
,所以这是一个问题。QML文档确实说它在QML中的名称是docoration
,但是如何真正使用它呢!看来,装饰
毕竟不能真正用于QML(可能是内存问题)。我通过在模型中存储图像路径来解决这个问题,然后将其设置为image
元素,效果很好。如果没有其他更好的答案,我会将我的代码作为答案发布。