[Kde-devel-es] Problemas con QDateTime

Antonio Larrosa Jiménez kde-devel-es@mail.kde.org
Fri, 10 Jan 2003 12:57:00 +0100


El Viernes, 10 de Enero de 2003 11:30, Jaime Robles escribió:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Buenas a todos!
>

Hola,

> Estoy teniendo algun "problemilla" con QDateTime.... me explico.
> En el programilla que estoy haciendo leo una fecha y la saco por
> pantalla en el "qlistview" sin ningún problema...
> Luego guardo en disco (sin problemas tambien) las fechas y horas de los
> eventos que tienen lugar en el programa.
>
> Luego cuando vuelvo a arrancar el programa y leo de disco tampoco me da
> problemas pero al mostrar en el qlistview se lee mal!!! No entiendo por

¿A qué te refieres exactamente con que "se lee mal" ?

> que, porque debe estar bien porque cuando vuelvo a escribir en disco me
> lo hace bien!!!
>
> Repito y aclaro:
> 1 .- leo del interfaz y creo que qtimedate, me lo muestra en qlistview
> sin problemas: foto1.png
>
> 2.- Guardo en disco, salgo y entro del programa por lo que lee de disco
> los datos y los muestra (esta vez mal) en el qlistview: foto2.png

hmm, ¿donde están las fotos ? :)

>
> Los datos se guardan bien en el programa y se leen tambien bien (creo)
> porque si guardo por segunda/tercera vez los datos estan bien (aunque se
> muestren mal)
> ==============
> 1,2003-01-10T10:26,EA4TV,599,599,28MHz,SBB,90,
> 2,2003-01-10T10:27,EA5TV,599,599,28MHz,SBB,90,
> ==============
>
> Los datos los muestro asi cuando pulso el botoon "ok":
> ==================
>     QListViewItem * item = new QListViewItem( klogui::logListView, 0 );
>     item->setText( 0,  aux.setNum( number ) );

hmm ?
Si aux es una variable auxiliar y solo la usas ahí, no hace falta que la 
uses, puedes poner simplemente
item->setText( 0,  QString::number( number ) );
que queda más claro.

>     item->setText( 1, dateTime.toString("dd-MM-yyyy") );

En vez de usar toString, deberías usar :

item->setText( 1, KGlobal::locale()->formatDate(dateTime.date()) );
para que use el formato que prefiera el usuario según KControl.

>     item->setText( 2, dateTime.toString("hh:mm") );

Igualmente:
item->setText( 2, KGlobal::locale()->formatTime(dateTime.time()) );

>     item->setText( 3, *qrz  );

¿ qrz es un puntero a QString ? No sé como lo usas, pero en general los 
punteros a QString no se usan casi nunca, mejor haz qrz directamente un 
QString y el código se te quedará bastante más claro (aquí es sólo un "*" 
menos, pero en otras partes puede significar bastante más diferencia)

> ==================
>
> Los datos los muestro así cuando leo el fichero y se ven mal:
> ==================
>     Klog::qrz = fields[2].latin1();
>     Klog::dateTime.fromString(fields[1], ISODate);
>      logbook.append(Qso (Klog::number, Klog::dateTime,
> fields[2].latin1(), fields[3].toInt(), fields[4].toInt(),
> fields[5].latin1(), fields[6].latin1(), fields[7].latin1(),
> fields[8].latin1()));
> //9 number, dateTime, String, Int, Int, Int, String, Int, String
> //   number, date, qrz, trstrx, trsttx, band, mode, power, comment
>
> // Aquí ya se ven mal por pantalla... así que es como si los leyera
> mal... cout <<"\n" << dateTime.toString("dd-MM-yyyy") << endl;
> cout <<"\n" << dateTime.toString("hh:mm") << endl;
>       QListViewItem * item = new QListViewItem( klogui::logListView, 0
> ); item->setText( 0, aux.setNum( Klog::number ) );
>       item->setText( 1, Klog::dateTime.toString("dd-MM-yyyy"));
>       item->setText( 2, Klog::dateTime.toString("hh:mm"));
>       item->setText( 3, fields[2].latin1() );

¿ Por qué usas latin1 ? ¿Es que no quieres que la gente de korea del norte 
use tu programa ;-) ? Pon directamente:
item->setText( 3, fields[2] );
Si fields[2] es un QString, no hay motivo para forzar el programa a que no 
use Unicode, ¿no?

> ¿Alguna sugerencia???
>

Siento no poder ayudarte en lo de las fechas, pero espero que el resto de 
comentarios te sirva de algo :).

Saludos,

--
Antonio Larrosa Jimenez
KDE developer - larrosa@kde.org
http://developer.kde.org/~larrosa/
Take care of self-appointed experts.