Seite 1 von 1

QtreeWidget

Verfasst: Sonntag 15. November 2009, 16:34
von userpython
Hallo zusammen,

ich habe ein Problem mit dem QtreeWidget. Ich kann das Item, was man anklickt nich abfragen.

Code: Alles auswählen

import sys
import sqlite3
from PyQt4 import QtGui, QtCore
from hilfe import Ui_Dialog as Dlg


class MainHilfe(QtGui.QDialog, Dlg): 
    def __init__(self):
        
        QtGui.QDialog.__init__(self) 
        self.setupUi(self)

        self.connect(self.treeWidget,
                QtCore.SIGNAL("itemClicked(QTreeWidgetItem*,int)"), self.onTest)


    def onTest(self,zahl):
        a=self.treeWidget.currentItem()
        
        print str(a)
        
        

appHilfe=QtGui.QApplication(sys.argv)
hilfe=MainHilfe()
hilfe.show()
appHilfe.exec_()  
Mit der Methode currentItem bekomme ich zwar das Objekt zurückgegeben aber ich kann es nicht auslesen. Bei der Methode .text()
kommt immer der Fehler:

Code: Alles auswählen

TypeError: insufficient number of arguments to QTreeWidgetItem.text()
Deshalb meine Frage, wie bekomme ich

<PyQt4.QtGui.QTreeWidgetItem object at 0x01FE59C0>

abgefragt bzw. umgewandelt.
habe so schon viel mit Qt gearbeitet, aber hier weiß ich wirklich nicht mehr weiter.

Verfasst: Montag 16. November 2009, 11:50
von franzf
1) Beim SLOT kannst du weniger Argumente mitgeben, als das SIGNAL sendet. Dezimieren geht aber nur von hinten. Deshalg statt "zahl" ein "item".
Das ist dann direkt das QTreeWidgetItem, auf das geklickt wurde.

2) Hat "text()" ein Argument, und das ist dein Fehler. Denn erwartet wird die Spalte, aus der du den text lesen willst.
Und genau aus diesem Grund solltest du das zweite Argument "zahl" nicht unterschlagen ;)

So schaut es dann in deinem SLOT aus:

Code: Alles auswählen

def onTest(self, item, col):
    print item.text(col)

Verfasst: Montag 16. November 2009, 13:35
von userpython
Vielen dank hat mir sher geholfen. die zeile in die klammern einzufügen ist mir nicht eingefallen.