Signal von QTableWidget verarbeiten

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Ich beiße auf Granit. Ich habe ein QTableWidget. ich benötige die Zeile und die Reihe der Zelle, auf welche ich doppelt geklickt habe. QT Designer (übersetzt mit pyuic) gibt folgendes aus

Code: Alles auswählen

QtCore.QObject.connect(self.tableWidgetDB, QtCore.SIGNAL(_fromUtf8("cellDoubleClicked(int,int)")), MainWindow.getTableInfo)
ich habe es dann auch noch manuell versucht.

Code: Alles auswählen

self.connect(self.tableWidgetDB,
                     QtCore.SIGNAL("cellDoubleClicked(int,int)"),
                     self.getTableInfo)
und dann noch mein Versuch der Verarbeitung dazu.

Code: Alles auswählen

    def getTableInfo(self,col, row):
        if col == 1:
            s = 'cell({},{}) duble clicked'.format(col, row)
            self.debugMessage(6,s)
Hier kommt aber nichts an. Die Funktion wird nicht ausgeführt.
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Habe es doch noch selbst herausgefunden. So ist es richtig. Wenn man richtig schreibt, sprich der Slot im QT Designer identisch mit der Pythonfunktion ist, dann muss man Signal Slot auch nicht zu Fuß schreiben :?

Das im QT Designer definierte Signal / Slot funktioniert.

Code: Alles auswählen

QtCore.QObject.connect(self.tableWidgetDB, QtCore.SIGNAL(_fromUtf8("cellDoubleClicked(int,int)")), MainWindow.getTableInfo)
Jetzt die passende Funktion dazu sieht dann so aus

Code: Alles auswählen

    def getTableInfo(self,row, col):
        s = 'cell({},{}) duble clicked'.format(row, col)
        self.debugMessage(6,s)
        if col == 1:
            self.debugMessage(6,s)
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@hans: warum machst Du es nicht, wie es BlackJack schon im anderen Thread vorgeschlagen hat, direkt?

Code: Alles auswählen

self.tableWidgetDB.cellDoubleClicked.connect(self.getTableInfo)
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Hallo Sirius3, viele Wege führen nach Rom. Jetzt, wo ich weiß wie die Signal / Slots im QT Designer definiert und im Programm eingebunden werden, werde ich die im Designer setzen. Erspart eine Menge an Tipparbeit.
Antworten