La diferencia entre las clases con widget en el nombre y las que tienen view en el nombre es que las de tipo widget almacenan un conjunto de datos propio para cada widget mientras que las view sólo son una vista para un modelo de datos independiente y que se puede compartir entre varias vistas. Un ejemplo perfecto de esto está en la siguiente dirección http://doc.qt.nokia.com/4.6/demos-interview.html
Las clases view suelen ocuparse en aplicaciones más complejas que las clases widget. Si tienes dudas sobre cual necesitas, utiliza las clases widget por simplicidad y porque probablemente sea la que necesites.
Para agregar elementos a los widgets, generalmente hay dos opciones aunque cada clase tiene su función/método específico.
La primera opción es crear un objeto de las clases QListWidgetItem, QTableWidgetItem o QTreeWidgetItem y pasar como parámetro parent un apuntador al widget al que lo queremos añadir.
La segunda opción es utilizar la función addItem de las clases widget, para cada una de ellas hay varias sobrecargas, es decir puedes agregar un elemento especificando un objeto de las clases Item o una cadena de texto, por ejemplo.
Un ejemplo para dejar todo más claro, utilizamos el enfoque en el que llamamos a la función addItem debido a que modificamos más propiedades del item de las que el constructor permite establecer. Utilizaremos QListWidget, pero el proceso para los otros dos widgets es muy similar.
- Código:
QLisWidget* lista = new QListWidget;
QListWidgetItem* elemento;
elemento = new QListWidgetItem(trUtf8("Elemento 1"));
elemento->setCheckState(Qt::Checked);
lista->addItem(elemento);
1. Declaramos nuestro objeto de alguna de las clases widget.
2. Creamos un objeto de la clase item correspondiente.
3. Llamamos a la función addItem del widget creado en el paso 1 y pasamos como parámetro el item creado en el paso 2.