PyQt子类的初始化方法QTableWidgetItem

问题描述:

我想子类化QTableWidgetItem,以便我的子类可以有一个额外的'id'属性。PyQt子类的初始化方法QTableWidgetItem

不幸的是,我有点困惑,因为PyQt的文档here显示四个不同初始化方法。

创建自己的初始化我“QTableWidgetItemWithId”子类方法(这也将传递一个额外的“身份证”的说法),我应该使用*指定参数时,** kwargs?如果是这样,那么正确的语法是什么?

非常感谢

我想说的是取决于你的口味,什么一点点你考虑可读性和你想保持你的子类的灵活性。 你可以添加你想要的任何东西到你的构造函数中,并且只需要把需要的东西交给QTableWidgetItem的构造函数。有很多方法可以做到这一点。我个人尽量避免* args和** kwargs。

from PyQt4.QtGui import QTableWidgetItem 

class ATableWidgetItem(QTableWidgetItem): 

    def __init__(self, id, *args, **kwargs): 
     super(ATableWidgetItem, self).__init__(*args, **kwargs) 
     self.id = id 

a = ATableWidgetItem(0) 
b = ATableWidgetItem(0, QTableWidgetItem.UserType) 
c = ATableWidgetItem(0, "text", type=QTableWidgetItem.UserType) 

class AnotherTableWidgetItem(QTableWidgetItem): 

    def __init__(self, id): 
     super(AnotherTableWidgetItem, self).__init__() 
     self.id = id 

d = AnotherTableWidgetItem(0) 

class YetAnotherTableWidgetItem(QTableWidgetItem): 

    def __init__(self, id, text="", type=QTableWidgetItem.Type): 
     super(YetAnotherTableWidgetItem, self).__init__(text, type) 
     self.id = id 

e = YetAnotherTableWidgetItem(0) 
f = YetAnotherTableWidgetItem(0, "Hello") 
g = YetAnotherTableWidgetItem(0, "Hello", QTableWidgetItem.UserType) 
+0

感谢您的支持。 – Kim 2011-03-13 12:50:13

我相信,因为它适合你,你可以定义为许多构造你的小部件项目。重写的基本方法是clone

Qt拥有一个自定义QTableWidgetItem后裔在这里演示项目:Spreadsheet定制QTableWidgetItem定义如下:spreadsheetitem.h

希望这会有所帮助,至于

+0

谢谢。我会看看这个。 – Kim 2011-03-13 12:48:41