1

我是 PySide 的新手,我正在尝试将本教程应用于我的用例: QML 中 Python 对象的可选列表 | Qt 维基 | Qt 项目

当我传递一个回调函数并从 qml MouseArea 调用它时,我收到此错误: TypeError: Result of expression 'model.on_select' [QVariant(PySide::PyObjectWrapper)] is not a function.

ThingWrapper这是我的模型项目类(或教程中提到的):

class QtPasswdItem( QtCore.QObject ):

    # other stuff      

    @QtCore.Slot()
    def on_select( self ):
        print 'User clicked on:'

这是为 QML 设置模型的代码:

    passwd_model = QtPasswdModel( [QtPasswdItem( {c: '%s%02d' % ( c, i )
        for c in QtPasswdItem.COLUMNS } ) for i in xrange( 1 )] )

    qtrc = qtview.rootContext()
    qtrc.setContextProperty( 'passwd_model', passwd_model )

    qtview.setSource( path_qml_main )

这是我的 QML 代码:

import QtQuick 1.0

ListView {
    id: passwd_list
    width: 800
    height: 600

    model: passwd_model

    // other stuff

    delegate: Component {
        Rectangle {

            // other stuff

            MouseArea {
                anchors.fill: parent
                onClicked: { model.on_select() }
            }

            // other stuff
        }
    }
}
4

0 回答 0