我想子類化QTableWidgetItem,以便我的子類可以有一個額外的'id'屬性。PyQt子類的初始化方法QTableWidgetItem
不幸的是,我有點困惑,因爲PyQt的文檔here顯示四個不同初始化方法。
創建自己的初始化我「QTableWidgetItemWithId」子類方法(這也將傳遞一個額外的「身份證」的說法),我應該使用*指定參數時,** kwargs?如果是這樣,那麼正確的語法是什麼?
非常感謝
我想子類化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
希望這會有所幫助,至於
謝謝。我會看看這個。 – Kim 2011-03-13 12:48:41
感謝您的支持。 – Kim 2011-03-13 12:50:13