在PyQt中命名getter和属性
我有一个用PyQt4写的自定义小部件:
class WRecordIdWidget(QtGui.QLineEdit):
....
def model(self):
return self._model
def setModel(self, model):
self._model = model
model = QtCore.pyqtProperty(str, model, setModel)
我创建了一个叫做model
的pyqt属性,这样就可以在Qt Designer中编辑它。
我根据Qt的编码标准把获取这个属性的函数命名为model()
。但是这个属性也叫model
,这就导致了函数名被遮盖。
所以在Qt Designer中会看到model
这个属性,但我在Qt中就不能再调用这个获取函数了——调用widget.model()会报错。我不知道C++是怎么处理这个问题的,为什么在C++中获取函数和Qt属性可以同名。
我是不是应该把获取函数改名为getModel()
呢?这样的话就和其他“内置”的获取函数不太一致了……
1 个回答
1
只需要重命名它。当你执行 model = QtCore.pyqtProperty(str, model, setModel)
这行代码时,其实是在把类里面的一个获取值的方法(getter)替换成了一个属性,这样你就无法直接访问原来的那个方法了。