[Kde-devel-es] Una duda...

Antonio Larrosa Jiménez kde-devel-es@mail.kde.org
Thu, 16 Jan 2003 13:41:26 +0100


El Martes, 14 de Enero de 2003 10:33, Jaime Robles escribió:

Sí, este mensaje sí llegó :)

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Buenos dias a todos.
> Me ha surgido una duda... respecto de las listas de datos que estoy
> manejando en el programa que estoy haciendo.
>
> Os cuento, por una parte estoy usando
> ===================
>     typedef QValueList<Qso> LogBook;
>     LogBook logbook;
> ===================
> para almacenar los contactos, pero además, para verlos estoy usando
> =====================
>    QListViewItem * item = new QListViewItem( klogui::logListView, 0 );

¿por qué pones klogui::logListView ? ¿Qué es logListView ? ¿una variable 
estática puntero a un QListView?
Queda más bonito (al menos en mi opinión :) ) si la haces una variable 
protegida normal y corriente de klogui y le añades un método para acceder 
a ella, por ejemplo con 
QListViewItem * item = new QListViewItem( milogui->listView() );
o incluso haciendo que klogui se encarge de añadir los elementos a la lista 
haciendo una función
void klogui::append( tuEstructuraConLosDatosDeUnElemento )
{
...
}

> =====================
> con lo que voy añadiendo a la "QListView" los elementos...
>
> Basicamente cada vez que añado un contacto nuevo hago un
> "logbook.append" para añadirlo a mi lista de contactos y luego un:
>  QListViewItem * item = new QListViewItem( klogui::logListView, 0 );
>
> Para añadirlo al ListView que es lo que veo...
>
> Creo que estoy manteniendo DOS listas cuando solo necesito una.
> ¿Me estoy equivocando?

No necesariamente, si esa es la forma en la que quieres que funcione, está 
bien :). De hecho, si quieres que el usuario pueda sacar dos vistas del 
mismo conjundo de datos, lo suyo es guardar los datos por una parte y la 
parte que los visualiza por otro (como hace el asistente de KDevelop al 
generar un proyecto nuevo).

Si realmente lo que quieres es eliminar el QValueList, puedes hacer una 
cosa: Hereda de QListViewItem y añadele todas las variables que guardas 
en Qso, es decir, haciendo una clase que a la vez sea un QListViewItem y un 
Qso. Como puedes iterar por los elementos de un QListView como si fuera 
una lista enlazada, puedes usar el propio QListView en funciones de 
QPtrList.
Pero de todas formas yo te diría que siguieras como lo estabas haciendo. La 
ventaja de seguir igual es que el diseño es extendible más facilmente, la 
ventaja de heredar de QListViewItem es que el código se te hace bastante 
más sencillo. Así que tú verás :)

Saludos,

--
Antonio Larrosa Jimenez
KDE developer - larrosa@kde.org
http://developer.kde.org/~larrosa/
Better read something in another language than a riddle in your own.