How about selecting index 0 once the combobox is initialized with the database data? It sounds to me that it has no valid index when first initialized, and if you try to programmatically select the first index, it's returning an invalid one. You don't need to generate a signal, just use something like .setCurrentIndex(0).

Claudio Felix wrote:
Hi everyone,

I'm developing an app which loads data from a database table into a
QSqlTableModel. At some point I associate this model to a Combo Box
(using QComboBox.setModel). The strange thing is, when I try to read
the current model index from the combo box view, for getting the
selected item's data from another database field on the same model
record, I get a invalid index, but If I just click on the combo box (I
don't even have to change the item) before trying to read its index,
it returns a valid model index. So, it is really necessary to do
something before, like generating a "currentIndexChanged" signal? What
I did was like this:


  def __init__(self):
       self.model = QSqlTableModel()
       self.model.setTable("dbtable")
       self.model.select()
       self.comboBox = QComboBox()
       self.comboBox.setModel(self.model)
       self.comboBox.setModelColumn("ITEM_NAME")


  def getItemID(self):
       index = self.comboBox.view().currentIndex()
       if not index.isValid():
           raise ValueError, "invalid index"                   # Here
I always get the error if I don't click on the combo box before
       row = index.row()
       column = self.model.fieldIndex("ITEM_ID")
       return self.model.data(self.model.index(row, column)).toInt()[0]

Thanks!
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to