我是 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
}
}
}