[pyar] Llenar combobox QT (indice del combo = ID tabla) RESUELTO

Wuelfhis Asuaje wasuaje en hotmail.com
Lun Jul 11 18:41:34 ART 2011



> 
> Message: 5
> Date: Mon, 11 Jul 2011 15:01:50 -0300
> From: Ramiro Algozino <algozino en gmail.com>
> Subject: Re: [pyar] Llenar combobox QT (indice del combo = ID tabla)
> To: Python Argentina <pyar en python.org.ar>
> Message-ID:
> 	<CADd56if=FQ4cPAor-XZajS1x5h05oKqkKMv+-oAb82F0V5nvpA en mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
> 
> El día 11 de julio de 2011 14:43, Ramiro Algozino <algozino en gmail.com> escribió:
> > El día 11 de julio de 2011 13:41, Wuelfhis Asuaje
> > <wasuaje en hotmail.com> escribió:
> >>> > Despues de googlear hasta sangrar no pude hayar una manera efectiva de
> >>> > llenar un combobox desde una tabla, bueno llenarlo es una tonteria, la
> >>> > cuestion esta en que necesito que que el index del valor de cada linea
> >>> > del
> >>> > combo sea el id de la tabla esto es lo que no he podido hacer.
> >
> >> Si bueno es lo que vengo haciendo pero con el borrar y el pasar del tiempo
> >> en la tablas no quedan ordenadas 0,1,2,3, sino que mas bien 2,3,5,6,9..n
> >> me interesa mas que agregar el valor que el indice del combo sea el ID de la
> >> TABLA.
> >
> > Hola!
> >
> > Se me ocurren dos cosas,
> >
> > 1° Si el id es siempre continuo en el resultado de la query, podés
> > probar con la cláusula SQL "ORDER BY", por ejemplo:
> >
> > SELECT id, col1, col2, col3 FROM MiTabla ORDER BY id
> >
> > Ahi te va a arrojar el resultado ordenado por id y podés mapearlo con
> > el índice del combo.
> >
> > 2° Usa un dict donde guardes {valor: id} que te devuelve la consulta y
> > después con el método currentText() del combobox podés obtener el id:
> >
> >
> > Espero que te sirva de algo..
> >
> >
> > Saludos!
> >
> > --
> > Ramiro Algozino
> > http://ramiroalgozino.com.ar/
> >
> 
> Me quedé con la pica porque me parecía que había algo más elegante..
> leyendo las docs del método addItem tenés esto:
> 
> void QComboBox::addItem ( const QIcon & icon, const QString & text,
> const QVariant & userData = QVariant() )
> Adds an item to the combobox with the given icon and text, and
> containing the specified userData (stored in the Qt::UserRole). The
> item is appended to the list of existing items.
> 
> 
> Es decir que le podés guardar data en el ítem si querés.. después la
> obtenes con itemData().
> 
> Acá hay uno que preguntaba algo que te puede servir:
> http://www.qtcentre.org/threads/8708-Retrieve-userData-of-a-comboBox-item
> 
> -- 
> Ramiro Algozino
> http://ramiroalgozino.com.ar/
>


Buenos gracias a todos ya lo resolvi


 			self.query=QSqlQuery("select * from cf_empleado_tipo",self.db.db);
			while self.query.next():
 				# se agrega el string  a mostrar y luego el id de la tabla	como un qvariant llamado ids
				ids = self.query.value(0).toInt()[0] 				
				self.cmbtipemp.addItem(self.query.value(1).toString() , QVariant(ids))





Ahora para acceder a él solo debo por ejemplo desde un slot


	@pyqtSignature("int")
 def on_cmbtipemp_currentIndexChanged(self, index):  
 	   print 'indice->'+str(self.cmbtipemp.itemData(index).toInt()[0])	 







 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110711/c1fc26da/attachment.html>


More information about the pyar mailing list