如何从Qt QuickWorkerScript
调用Python方法?在
通过注册QObject
的子类,我成功地从QML应用程序访问Python方法:
class Foo(QtCore.QObject):
@QtCore.pyqtSlot()
def bar(self):
pass # do stuff here
app = QtGui.QGuiApplication([])
QtQml.qmlRegisterType(Foo, 'Foo', 1, 0, 'Foo')
# more boilerplate Qt/Qt Quick
因此,在QML应用程序中,我可以成功地调用Foo.bar()
。在
据我所知,我应该从WorkerScript
调用任何长时间运行的函数。在
如何使用WorkerThread
在后台线程中运行Foo.bar()
?在
Per the docs,WorkerScript
s不能使用import
语法,因此我不确定如果没有导入,我如何访问{
我需要UI能够显示来自Foo.bar()
的进度,因为该函数需要花费一点时间并做一些事情。在
向^{} 发送信息的唯一方法是通过^{} :
但是,由于它读取所有元素都被复制(ListModel类型的元素除外),因此不可能使用从QObject类或其方法继承的任何对象。在
您可以将进程设置为
pyqtProperty
,这样您就可以将它公开给QML
,并使用一个槽从另一个线程通过QRunnable
更新它的值,更新是通过QMetaObject::invokeMethod()
完成的然后可以通过run_bar()启动它,并通过progress属性显示它:
^{pr2}$完整的例子可以在下面的link
相关问题 更多 >
编程相关推荐