[PyQt] Trouble reading a model index from an "untouched" combo box

Claudio Felix felix.claudio at gmail.com
Tue Jan 26 21:46:11 GMT 2010


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!


More information about the PyQt mailing list