2011-11-08 26 views
7

¿Cómo agregar 2 imágenes y texto en QListWidget en tiempo de ejecución en Qt? Quiero colocar una imagen al principio de la lista y una al final y el texto debe aparecer poco después de mi primera Imagen.QListWidget ¿Agregar elementos personalizados en Qt?

caso itemclicked

connect(list, SIGNAL(itemClicked()), this, SLOT(clicked(QListWidgetItem *))); 
void MyWidget::clicked(QListWidgetItem *item) 
{ 
    //code 

} 

Respuesta

10

Tenga una mirada en la función setItemWidget. Puede diseñar un widget (llámelo MyListItemWidget) que contiene dos etiquetas de icono y una etiqueta de texto, y en su constructor proporcione los dos iconos y el texto. Entonces podrías agregarlo a tu QListWidget. El código de ejemplo siguiente:

QIcon icon1, icon2; // Load them 
MyListItemWidget *myListItem = new MyListItemWidget(icon1, icon2, "Text between icons"); 
QListWidgetItem *item = new QListWidgetItem(); 
ui->listWidget->addItem(item); 
ui->listWidget->setItemWidget(item, myListItem); 

También debe echar un vistazo a QListView y QItemDelegate que es la mejor opción para el diseño y la visualización de los elementos de lista personalizada.

EDITAR REFERENTE A SU CONEXIÓN

si aplica una señal a una ranura de su firma debe coincidir. Esto significa que una ranura no puede tener más parámetros que una señal. Desde el signals-slots documentation

El mecanismo de señales y ranuras es de tipo seguro: La firma de una señal de debe coincidir con la firma de la ranura de recepción. (De hecho, una ranura puede tener una firma más corta que la señal que recibe, ya que puede ignorar argumentos adicionales.)

Esto significa que la señal debe tener el argumento QListWidgetItem * en la conexión.

+0

Seguí el mismo enfoque sugerido por usted que funciona bien pero después de eso cuando uso el evento itemclicked en la lista se dispara con doble clic, debería funcionar con un solo clic. – user662285

+0

¿Cómo se maneja la señal 'itemClicked'? Algún código sería útil – pnezis

+0

ver mi publicación editada arriba. – user662285

Cuestiones relacionadas