[PyQt] Trouble reading a model index from an "untouched" combo box
Demetrius Cassidy
dcassidy36 at mass.rr.com
Tue Jan 26 21:59:08 GMT 2010
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 at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>
>
More information about the PyQt
mailing list