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

+0

Эй, за ваш ответ! Я удалил список строк [], но у меня возникла новая проблема с этой строкой: items.append (QtGui.QTreeWidgetItem (list [i])), что нормально, потому что list [i] не является целым числом! Итак, как я могу добавить в свой список элементов, мой список контактов данных? Или, может быть, есть другой способ сделать это? – Ary

+0

Позвольте мне понять, что в addContact список имеет форму [nom, prenom, tel, adresse], которые являются всеми строками, и вам нужна одна строка, добавленная к дереву с этой информацией? – mdurant

ответ

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

+0

Большое вам спасибо! Вы сделали мой день ;) – Ary