PyQt QTableWidgetItem子类的初始化方法

2024-09-30 10:32:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将QTableWidgetItem子类化,这样子类就可以有一个附加的“id”属性。在

不幸的是,我有点困惑,因为PyQt文档here显示了四种不同的init方法。在

要为我的“QTableWidgetItemWithId”子类创建自己的init方法(它还将传递一个额外的“id”参数),我应该使用*args、**kwargs吗?如果是,正确的语法是什么?在

非常感谢


Tags: 方法文档id参数属性hereinit语法
2条回答

我想说这取决于你的品味,你认为什么是可读的,以及你想保持你的子类有多灵活。 您可以向构造函数添加所需的任何内容,并将所需内容交给QTableWidgetItem的构造函数。有很多种方法。在可能的情况下,尽量避免阿吉。在

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)  

我相信您可以为您的widget项定义尽可能多的构造函数。重写的基本方法是clone。在

Qt有一个演示项目,其中有一个自定义的QTableWidgetItem子代:Spreadsheet,在这里定义了自定义QTableWidgetItem:spreadsheetitem.h

希望这对你有帮助,谢谢

相关问题 更多 >

    热门问题