PySide教程:PySide中使用Qt屬性
PySide提供了 Propery 函數定義一種屬性,該屬性可以同時作為Qt和Python的屬性(我們知道,一般在Python下定義的屬性,并不是Qt屬性)。而這個屬性的Setter和getter也可以用Python函數定義。
下面的小例子解釋如何在Python中定義和使用Qt屬性:
class MyObject(QObject):
def __init__(self,startval=42):
self.ppval = startval
def readPP(self):
return self.ppval
def setPP(self,val):
self.ppval = val
pp = Property(int, readPP, setPP)
obj = MyObject()
obj.pp = 47
print obj.pp
def __init__(self,startval=42):
self.ppval = startval
def readPP(self):
return self.ppval
def setPP(self,val):
self.ppval = val
pp = Property(int, readPP, setPP)
obj = MyObject()
obj.pp = 47
print obj.pp
這里有PySide屬性系統的詳細定義 PSEP 103
QML中的屬性
如果你在QML使用對象的屬性,QML要求能夠通知該對象屬性發生修改的消息。下面這個例子則演示了如何使用該特性。
class Person(QtCore.QObject):
def __init__(self, name):
QtCore.QObject.__init__(self)
self._person_name = name
def _name(self):
return self._person_name
QtCore.Signal
def name_changed(self):
pass
name = QtCore.Property(unicode, _name, notify=name_changed)
def __init__(self, name):
QtCore.QObject.__init__(self)
self._person_name = name
def _name(self):
return self._person_name
QtCore.Signal
def name_changed(self):
pass
name = QtCore.Property(unicode, _name, notify=name_changed)
在數據發生改變時,QML會自動更新所有依賴該數據的表達式。
0
0
全站熱搜