1

我嘗試在我的QtreeWidget列中插入項目列表:每個數據都插入到每列中,因此存在與列一樣多的項目。 我正在使用MVC架構,但插入失敗!添加QtableWidget列中的項目列表

這是我的看法:

def addContact(self, list):#add contact to my QTreeWidget 
    list=[] #list of contact 
    items=[]; #list of item 

    self.treeWidget.setColumnCount(4); 

    for i in list: 
     items.append(QtGui.QTreeWidgetItem(list[i])); #create a QtreeWidgetItem's and append them 
     items.setText(i,items[i]) 
     self.treeWidget.insertTopLevelItem(item[i]) #add all in my tree 


class view_dialog(QtGui.QDialog, Ui_Dialog): 
    def __init__(self): 
     QtGui.QDialog.__init__(self) 
     Ui_Dialog.__init__(self) 
     self.setupUi(self) 

    def readData(self): #read data entered by user 
     nom=self.nom_line.text() 
     prenom=self.prenom_line.text() 
     tel=self.tel_line.text() 
     adresse=self.adresse_line.text() 

     contact=[nom, prenom, tel, adresse] 

     return contact 

    def clearData(self): # clear data 
     self.nom_line.clear() 
     self.prenom_line.clear() 
     self.tel_line.clear() 
     self.adresse_line.clear() 

這是我的模型:

class modelContact: 
    def __init__(self): 
     self.contact=[] #Create a list of Contact 

    def AddContact(self, nom, prenom, tel, adresse):#GetContact from my QList 
     self.contact.append(nom); 
     self.contact.append(prenom); 
     self.contact.append(tel); 
     self.contact.append(adresse); 

,這是我的控制器:

def addContactToPhoneBook(self): 
    list=self.dialog.readData() 
    self.window.addContact(list) 
    self.dialog.clearData() 

有人能幫助我找到什麼是錯的?

UDPDATE

我在我的看法改變了我添加的產品清單到QtreeWidget的方式,似乎對我來說更合乎邏輯

我的新觀點:

class view_window(QtGui.QMainWindow, Ui_MainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     Ui_MainWindow.__init__(self) 
     self.setupUi(self) 


    def addContact(self, list):#add contact to my QTreeWidget 
     #list=[] #list of contact 
     items=[]; #list of item 

     self.treeWidget.setColumnCount(4); 

     for i in list: 
      items.append(QtGui.QTreeWidgetItem(i)); #create a QtreeWidgetItem's and append them 

     for j in range(4): 
      items.setText(j,items(j)) 
      self.treeWidget.insertTopLevelItem(items) #add all in my tree 

但現在我有一個malloc_error_break調試,我認爲這是因爲我沒有分配我的項目,但在Python中,所以我怎麼能做一個QTreeWidgetItem * items = new QTreeWidgetItem()與我的項目列表?

+0

'列表= []'確保換循環從不執行,並且沒有項目被添加。這行應該被刪除。 – mdurant 2014-10-08 22:35:52

+0

嘿thx爲您的迴應!我刪除了行列表[],但我有一個新的問題,該行:items.append(QtGui.QTreeWidgetItem(list [i]))這是正常的,因爲列表[i]不是一個整數!那麼我該如何添加到我的項目列表中,我的數據聯繫人列表?或者,也許有另一種方式來做到這一點? – Ary 2014-10-09 08:21:10

+0

讓我明白,在addContact中,列表的形式是[nom,prenom,tel,adresse],它們都是字符串,並且您希望將單個行添加到具有此信息的樹中? – mdurant 2014-10-09 13:45:32

回答

1

要添加到單個行:

self.treeWidget.insertTopLevelItem(QtGui.QTreeWidgetItem(list)) 

要添加4行,每行一個數據,在連續的列:

for i in range(4): 
    stlist = [""] * 4 
    stlist[i] = list[i] 
    self.treeWidget.insertTopLevelItem(QtGui.QTreeWidgetItem(stlist)) 
+0

後者大概可以用'insertTopLevelItems'在一行中完成# – mdurant 2014-10-09 18:12:05

+0

非常感謝!你讓我今天一整天都感覺很好 ;) – Ary 2014-10-09 18:27:43