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)
答
我相信,因为它适合你,你可以定义为许多构造你的小部件项目。重写的基本方法是clone。
Qt拥有一个自定义QTableWidgetItem后裔在这里演示项目:Spreadsheet定制QTableWidgetItem定义如下:spreadsheetitem.h
希望这会有所帮助,至于
+0
谢谢。我会看看这个。 – Kim 2011-03-13 12:48:41
感谢您的支持。 – Kim 2011-03-13 12:50:13