Skip to main content
 首页 » 编程设计

python之在 PyQt 中命名 getter 和属性

2025年05月04日6zlslch

我有一个用 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 编码标准将 getter 命名为 model()。但属性也称为 model,隐藏 getter。

所以 Qt Designer 将看到 model 属性,但我将无法再在 Qt 中调用 getter - widget.model() 将引发错误。我不知道 C++ 如何处理这个问题,也不知道在 C++ 中,getter 和 Qt 属性如何具有相同的名称。

我应该将 getter 重命名为 getModel() 吗?那么它就不会与其他'内置'的getter保持一致......

请您参考如下方法:

只需重命名即可。在执行 model = QtCore.pyqtProperty(str, model, setModel) 时,您实际上是用类字典中的属性替换了 getter,因此您只是失去了对它的直接访问权限。