支持Qt属性

    支持Qt属性

PyQt5不支持设置和获取Qt属性,就好像它们是普通的实例属性一样。这是因为属性的名称经常与属性的getter方法的名称冲突。

但是,PyQt5确实使用在创建实例时传递的关键字参数来支持属性的初始设置。例如:

act = QAction("&Save", self, shortcut=QKeySequence.Save,
        statusTip="Save the document to disk", triggered=self.save)

该示例还演示了使用关键字参数将信号连接到插槽。

PyQt5还支持使用该pyqtConfigure()方法设置属性值(以及将信号连接到插槽)。例如,以下结果与上面给出的结果相同:

act = QAction("&Save", self)
act.pyqtConfigure(shortcut=QKeySequence.Save,
        statusTip="Save the document to disk", triggered=self.save)

    定义新的Qt属性

可以使用该pyqtProperty() 函数定义新的Qt属性。它的使用方式与标准Python property() 函数相同。事实上,以这种方式定义的Qt属性也表现为Python属性。

PyQt5.QtCore.pyqtPropertytype [,fget = None [,fset = None [,freset = None [,fdel = None [,doc = None [,designable = True [,scriptable = True [,stored = True [,user = False [,constant] = False [,final = False [,notify = None [,revision = 0 ] ] ] ] ] ] ] ] ] ]] ] ] )

创建一个既作为Python属性又作为Qt属性的属性。

参数:
  • type - 属性的类型。它是Python类型对象或字符串,是C ++类型的名称。
  • fget - 用于获取属性值的可选callable。
  • fset - 用于设置属性值的可选callable。
  • freset - 用于将属性值重置为其默认值的可选callable。
  • fdel - 用于删除属性的可选callable。
  • doc - 属性的可选docstring。
  • designable - 可选择设置Qt DESIGNABLE标志。
  • scriptable - 可选择设置Qt SCRIPTABLE标志。
  • stored - 可选择设置Qt STORED标志。
  • user - 可选择设置Qt USER标志。
  • 常量 - 可选择设置Qt CONSTANT标志。
  • final - 可选择设置Qt FINAL标志。
  • notify - 可选的未绑定通知信号。
  • revision - 导出到QML的修订版。
返回类型:

属性对象。

它也可以pyqtProperty()像标准Python property()函数一样用作装饰器。以下示例显示如何int使用getter和setter 定义属性:

from PyQt5.QtCore import QObject, pyqtProperty

class Foo(QObject):

    def __init__(self):
        QObject.__init__(self)

        self._total = 0

    @pyqtProperty(int)
    def total(self):
        return self._total

    @total.setter
    def total(self, value):
        self._total = value

如果您更喜欢Qt术语,您也可以使用write而不是 setter(而read不是getter)。

猜你喜欢

转载自blog.csdn.net/Yuyh131/article/details/84646560