[Python-de] POython QT und Listen

Ulrich Berning ulrich.berning at desys.de
Mon Aug 8 17:07:13 CEST 2005


Stefan Miefert schrieb:

>
>>>          item.setText="Alles ok"
>>>   
>>
>>
>> setText ist eine Funktion (jedenfalls im Original C++ Qt), also eher
>> item.setText("Alles ok").
>>
>>  
>>
>>> Da passiert aber nix. Keine EInträge werden angezeigt
>>>
>>> Wenn ich jetzt das aufrufe
>>>
>>>            item.paint()
>>>
>>> bekomme ich einen Fehler:
>>>
>>> TypeError: Insufficient number of arguments to QListBoxItem.paint()
>>>
>>> Welcher Wert muss da übergeben werden ?
>>>   
>>
>>
>> Schau in die Qt Doku, paint will man normalerweise nicht selbst
>> aufrufen, eher schon repaint. Aber auch das sollte unnoetig sein, das
>> macht die QListBox wenn du die Items erstellst...
>>
>> Andreas
>>
>>  
>>
>
> Hallo,
>
> habe es mal geändert aber nix passiert
>
>        for row in result:
>            # 
> self.listBoxMitarbeiter.insertItem(self.__tr(str(row["nachname"]+","+row["vorname"])))     
>
>            # 
> self.mitarbeiterliste[row["MAID"]]=self.listBoxMitarbeiter.count()-1
>            # 
> self.mitarbeiterliste2[self.listBoxMitarbeiter.count()-1]=row["MAID"] 
>                      item = QListBoxItem(self.listBoxMitarbeiter)
>            item.MITARBEITERID = row["MAID"]
>            item.setText("Alles ok")

Ein kurzer Blick in die Qt Doku würde zeigen, dass QListBoxItem eine 
abstrakte Klasse ist und damit auch nicht direkt verwendet werden kann. 
Also entweder von QListBoxItem ableiten und paint(), width() und 
height() implementieren (ist ziemlich viel Aufwand), oder QListBoxText 
verwenden. QListBoxText ist von QListBoxItem abgeleitet und kann in der 
gewünschten Art und Weise verwendet werden:

item = None
for row in result:
    item = QListBoxText(self.listBoxMitarbeiter, 
 row["nachname"]+","+row["vorname"], item)
    item.MITARBEITERID = row["MAID"]

Alternativ könnte man QListView und QListViewItem verwenden.

Ulli