-------- Weitergeleitete Nachricht --------
Betreff: Re: [Eric] PyQt-Slot for QtWidget (QComboBox) created during runtime
Datum:  Sun, 23 Sep 2018 16:05:18 +0200
Von:    GM <[email protected]>
An:     serge <[email protected]>



Serge,

!!! THX !!!

it really works like a charm!

have a nice remaining weekend!

george


Am 23.09.2018 um 15:35 schrieb serge:
Hi George,

You have to derivate your own comboBox class like this:

class comboBoxProduit(QComboBox):
    '''
    Classe dérivée pour combobox rang produit
    '''
    curIndexChanged = pyqtSignal(int, int)

    # ------------------------------------------------------------------------------------
    def __init__(self, parent, row):
        super(comboBoxProduit, self).__init__()
        self.parent = parent
        self.row = row          # rangée de la table
        self.currentIndexChanged.connect(self.emetEvent)

    # ------------------------------------------------------------------------------------
    def emetEvent(self, index):
        self.curIndexChanged.emit(index, self.row)

and after when you add the comboBox cb in the table:

    cb.curIndexChanged.connect(self.selectRangChange)

and declare the function associated in the dialog file:
    # -----------------------------------------------------------------------------------
    def selectRangChange(self, index, row):
        .....
        ....

Regards
Serge



Le 23/09/2018 à 14:39, GM a écrit :
Hi @all,

I've created a dialog-window with an QTableWidget. Users can add a row by using a pushbutton. In a cell of the new row appears a QComboBox. How can changes of this QComboBox trigger a function?

It's no problem for to text-only-cells (I can use:

    @pyqtSlot(int, int)
    def on_tableWidgetX_cellChanged(self, row, column):
        print("cell changed: ", row, column)

which works as intended.)

Functions like

    @pyqtSlot(QComboBox)
    def on_tableWidgetX_itemChanged(self, item):
        print("OK1")

    @pyqtSlot(QComboBox)
    def on_tableWidgetX_itemClicked(self, item):
        print("Ok2")

never recieve a signal.

I think the QComboBox can not send a aignal. Originally the "Generate Dialog Code..."-dialog suggests to pass a "QTableWidgetItem*" to the pyqtSlot, but this Item is created during runtime, so it can not be found in the Ui_Dialog...

Any suggestions?


george

_______________________________________________
Eric mailing list
[email protected]
https://www.riverbankcomputing.com/mailman/listinfo/eric



--
Georg Mößlacher
+43-664-735 69 327

_______________________________________________
Eric mailing list
[email protected]
https://www.riverbankcomputing.com/mailman/listinfo/eric

Reply via email to