Claudio Felix
Tue, 26 Jan 2010 13:46:23 -0800
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