QML没有从pyside的槽中接收到正确的值

时间:2013-12-24 05:05:27

标签: qml pyside qlistview

我希望在QAbstractListModel中使用此函数返回的值来创建ListView

@QtCore.Slot(int, result=QtCore.QAbstractListModel)
def subModel(self,index):
    print self._items[index]._plm()
    return self._items[index]._plm()

以下是我的qml

                ListView {
                    id: progressList
                    model: tabsModel.subModel(index)
                    delegate: Component {
                          Item {
                                height: 42
                                width: 0.9*parent.width
                                Rectangle {
                                    height: parent.height
                                    width: parent.width*0.98
                                    x: 30
                                    y: 60
                                    color: "blue"
                                    Text {
                                        id: file_descr
                                        text: model.transfer.mfilename
                                        wrapMode: Text.WordWrap
                                        font.italic: true
                                        font.pointSize: 12
                                        clip:true
                                        color: "darkgrey"
                                        anchors.verticalCenter: parent.verticalCenter
                                        anchors.margins: 10
                                    }                                        
                                }                                    
                            }
                        }
                    }

我看到调用了subModel(执行了print语句)。但模型分配不会发生在QML中。我需要调用此函数(subModel)来分配模型,因为它是一个子列表。我哪里错了?

我怀疑有些问题     result = QtCore.QAbstractListModel。 我通过使它成为ProgressListModel(我的实际ListModel类)来玩,但这也不起作用。

1 个答案:

答案 0 :(得分:1)

使用“QVariant”而不是QAbstractListModel修复了问题。

@QtCore.Slot(int, result="QVariant")
def subModel(self,index):
    print self._items[index]._plm()
    return self._items[index]._plm()