Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用QStandarItemModel和QML设置/显示图标_C++_Qt_Qml - Fatal编程技术网

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
元素,效果很好。如果没有其他更好的答案,我会将我的代码作为答案发布。