Hola:
Otra duda existencial sobre Qt.
El caso es que se supone que lo más recomendable es usar los tipos propios de Qt si queremos garantizar la mejor compatibilidad entre plataformas.
Así es recomendable usar
qint8 en lugar de
char,
qint32 en lugar de
int,
QList<> en lugar de
std::list<>, etc....
El problema es que si se usan los tipos "propios", la aplicación es 100% Qt, con las garantías de que los tipos funcionarán bien en todas las plataformas en las que compila Qt.
Pero al mismo tiempo, la aplicación pierde la estandarización de ser C++.
En mi caso estoy haciendo una aplicación que primero he terminado (bueno,casi...) en C++. Toda ella se maneja por medio de un menú en el main.cpp hecho para la consola.
Ahora para portarla a Qt, es tan fácil, porque sólamente hay que cambiar cada opción del menú por su correspondiente equivalencia en Qt (cuadros de diálogo para entrada de datos, botones para acciones,en fin....equivalencia 100%)
En lo poco que llevo hecho, la estrategia ha sido convertir los tipos de Qt a los tipos C++.
Por ejemplo, si creo un documento nuevo, he de definir dos parámetros que luego llevará el constructor.
Dichos parámetros los recogen dos
QLineEdit, por lo que se guardan en
QString
Pero el constructor se inicia con:
Código C++:
Ver original(std::string Codigo,std::string Resumen)
En este caso, es fácil puesto que puedo convertir los datos que recoge el cuadro de diálogo y pasarlos a std:string
Código C++:
Ver original(cuadro->LeeCodigo().toStdString(),cuadro->LeeResumen().toStdString())
Pero ahora llego al momento de trabajar con ficheros. Y ahora me veo
obligado a hacer una chapucilla para mantener el código original C++ y usar métodos de Qt para abrir ficheros:
Código C++:
Ver originalQString filename = QFileDialog::getOpenFileName(this);
NuevaInstancia.nombrefichero = filename.toStdString();
QFile file(filename);
std::ifstream ifs (NuevaInstancia.nombrefichero.c_str(), std::ios::in|std::ios::binary);
if (file.open(QIODevice::ReadOnly|QIODevice::Text))
{
.....................
Como se ve, hago uso de
QFile y de
std::ifstream, ya que la aplicación realmente lee desde un objeto ifstream. Y aqui no hay conversiones sobre la marcha. O leo desde un QFile o desde un std::ifstream. Si opto por lo primero, definitivamente debería de cambiar las funciones originales.
De este problema me ha venido la reflexión.
Total, después de tanto rollo, la pregunta es:
¿Qué estrategia usáis para portar las aplicaciones? ó ¿Directamente trabajáis en Qt?
¿Que véis que sea mejor?
Bueno, saludos y gracias!