所以我不确定这是一个错误还是什么,但我花了很长时间来解决这个问题,但无法解决。访问调用QObject::property()
函数时会出现问题。这是一个最小的可重现示例:
import sys
from PySide2 import QtCore
from PySide2.QtWidgets import QApplication
from PySide2.QtCore import Qt, QCoreApplication, QObject, Slot
from PySide2.QtQml import QQmlApplicationEngine, QQmlContext
class MyItem(QObject):
def __init__(self):
super(MyItem, self).__init__()
self.name = "John"
self.age = 22
@QtCore.Property(QtCore.QObject, constant=True)
def getName(self):
return self.name
@QtCore.Property(QtCore.QObject, constant=True)
def getAge(self):
return self.age
if __name__ == '__main__':
app = QApplication(sys.argv)
provider = MyModelProvider()
item = MyItem()
print(item.property("getName")) # the program crashes here
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
QCoreApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
engine = QQmlApplicationEngine()
engine.rootContext().setContextProperty('provider', provider)
engine.load('qml/main.qml')
sys.exit(app.exec_())
该程序总是崩溃并显示以下输出:
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)