我正在尝试将代码从PyQt5移植到PySide2。在某些时候,我正在使用:
QMetaObject.invokeMethod(dialog, "my_function", Qt.QueuedConnection, QGenericArgument.Q_ARG(str, filepath))
尽管如此,Q_ARG不在PySide2中的QGenericArgument中。实际上,尽管在文档中将其描述为要使用的宏而不是QGenericArgument,但我根本无法找到它。
计划B:即使文档不鼓励这样做,我也尝试直接使用QGenericArgument。因此,我尝试了这些:
QMetaObject.invokeMethod(dialog, "my_function", Qt.QueuedConnection, QGenericArgument(str, filepath))
QMetaObject.invokeMethod(dialog, "my_function", Qt.QueuedConnection, QGenericArgument('str', filepath))
QMetaObject.invokeMethod(dialog, "my_function", Qt.QueuedConnection, QGenericArgument('QString', filepath))
在所有情况下,错误都是相同的:
ERROR: 'PySide2.QtCore.QGenericArgument' called with wrong argument types:
PySide2.QtCore.QGenericArgument(str, str)
Supported signatures:
PySide2.QtCore.QGenericArgument(PySide2.QtCore.QGenericArgument)
PySide2.QtCore.QGenericArgument(bytes = nullptr, void = nullptr)
所以看来我必须在这里使用指针,但不知道该怎么做。另外,我还没有找到用于PySide2的invokeMethod的任何示例。
有什么主意吗?