2010-01-09 21 views

Respuesta

8

Sí. No, quizás. Ver también: Java y "escribir una vez, ejecutar en cualquier lugar".

Disposición del sistema de archivos, utilidades externas, cualquier cosa que pueda hacer con cosas como iconos de dock, comportamientos de codificación de caracteres, éstas y más áreas donde podría tener algunos problemas.

Usar Qt y Python, y evitar en gran medida todo lo que parezca vinculado a bibliotecas o comportamientos específicos de Windows siempre que sea posible facilitará la ejecución de la aplicación en Mac y Linux, pero para cualquier aplicación no trivial, la primera vez Es explotar en su cara.

Pero a través de la elección cuidadosa de frameworks y librerías, hacer que la aplicación funcione multiplataforma se parecerá mucho más a la corrección de errores que a la tradicional "porting".

2

Sí. El código que escriba utilizando Qt funcionará en Windows, Mac, Linux/X11, Linux incorporado, Windows CE y Symbian sin ningún cambio. Puede tomar un look here.

0

Puede funcionar bien, pero llevará algunas pruebas, y por supuesto Qt solo maneja la portabilidad de la GUI, no la miríada de otras cosas que pueden causar problemas de portabilidad.

Las aplicaciones de Qt generalmente no encajan muy bien en MacOS porque no tienen soporte de Applescript por defecto y no necesariamente tienen las combinaciones de teclas correctas. Pero si haces el trabajo para solucionar esos problemas, funcionan, pero no muy bien. En la Mac, es mucho mejor construir una interfaz de usuario nativa. Si se trata de una aplicación interna, Qt probablemente esté bien, pero si está a la venta, no hará muchas ventas y se creará algunas molestias de soporte.

+2

Esto * absolutamente * no es cierto. Qt es mucho más que una biblioteca de GUI multiplataforma y es evidente que debe investigar más sobre ella antes de responder preguntas al respecto. Proporciona todo, desde llamadas a sistemas de archivos multiplataforma a estructuras de datos de alto nivel entre plataformas, a redes multiplataforma y a componentes de navegador integrables multiplataforma. –

1

En general, siempre que no utilice código que no esté cubierto por las clases de Qt, sí.

Tengo varias aplicaciones compiladas recientemente compiladas en Linux (64 bits) en Windows, y al revés. Funciona para mí todo el tiempo.

Dependiendo de sus necesidades, es posible que también encuentre problemas con el compilador, pero estoy seguro de que sabrá cómo solucionarlos. Otras personas mencionaron algunos problemas que debes buscar, solo lee las otras publicaciones en la pregunta.

0

Como dijeron los demás, todo lo que se hace usando Qt-Functionality probablemente funcionará sin problemas, CUANDO no se usa la funcionalidad específica de la plataforma de qt.

No hay tanto (la mayor parte tiene que ver con el administrador de ventanas), pero algunas cosas podrían no funcionar en otros sistemas. Pero tales cosas seguramente se mencionan en la documentación de Qt.

Todavía hay cosas que no pueden hacerse usando Qt, por lo que tendrá que hacerlo usted mismo usando Python simple ... Sí "Python" en sí mismo es independiente de la plataforma (debería), pero hay muchas otras cosas involucradas ... bueno, principalmente el sistema operativo. Y cómo reacciona el sistema operativo, tendrá que descubrirlo probando la aplicación en todos los sistemas operativos de destino.

Recientemente escribí una aplicación GUI bastante simple, aunque funcionaba sin problemas en Windows, no se ejecutaba en Linux, porque en Linux Python interpretaba los archivos codificados en Unicode de forma diferente que en Windows. Además, un pequeño script que debe devolver el nombre de host de la máquina, que lo hizo en Windows, solo devolvió "localhost" en Linux, que obviamente no era lo que yo quería.

5

Como se mencionan otros carteles, la cuestión clave es asegurarse de que nunca toque una API distinta de Qt que no sea multiplataforma. O realmente, incluso una API distinta de Qt crossplatform, si usas Qt tienes que comprometerte con ella, es un marco completo y, en general, quedarte con Qt es más fácil que ir a cualquier otra cosa. Hay algunas buenas ventajas ya que las primitivas básicas en su programa funcionarán de la misma manera en todas partes. (es decir, una QString en su código de red será la misma que una QString en su código de interfaz.) En cuanto a la portabilidad, si permanece dentro de la API que Qt le proporciona, debería funcionar en múltiples plataformas.

Habrá áreas donde puede necesitar llamar algunas funciones de Qt que proporcionan ajustes específicos entre plataformas más importantes para algunas plataformas que otras (por ejemplo, iconos de base) y no tendrá una aplicación pulida en las tres plataformas . Pero en general, debe permanecer muy cerca de una aplicación que compila y ejecuta en los tres. (Trate de usar qmake o un sistema de compilación similar también, ya que el proceso de compilación para aplicaciones Qt varía según la plataforma. Diferentes indicadores, etc.)

Hay algunos problemas extraños que surgen cuando se mezcla Qt con otras API como OpenGL, en particular, la forma en que Windows bloquea los contextos GL difiere de la forma en que lo hace OS X y Linux, por lo que si tiene la intención de utilizar OpenGL con múltiples subprocesos, intente compilar periódicamente en las otras plataformas para asegurarse de que nada esté completamente anulado. Esto también señalará rápidamente áreas en las que podría haber usado inadvertidamente una API del sistema no multiplataforma.

He usado Qt con un equipo para construir un juego multijugador en red multijugador en tiempo real en 3-d (léase: aplicación no trivial que utilizaba muchas áreas de Qt) y no nos quedamos impresionados por la efectividad de la capacidad de Qt para soportar plataformas múltiples. (Desarrollamos en OS X mientras nos enfocamos en Windows y regularmente nos aseguramos de que todavía se ejecutara también en Linux). Encontramos solo algunos errores específicos de la plataforma, la mayoría de los cuales surgieron del uso de API no Qt como OpenGL. (Lo que realmente debería decirte algo, que OpenGL fue más una lucha para usar la plataforma cruzada que Qt).

Al final de la experiencia, nos complació el poco tiempo que necesitábamos dedicarnos a la plataforma específica loco. Fue sorprendente lo bien que pudimos hacer una aplicación GUI para Windows dado que casi ninguno del equipo realmente la usó como una plataforma de desarrollo primaria a través del proyecto.

Pero haga la prueba temprano y con frecuencia. No creo que su enfoque de escribir una aplicación completa y luego probar sea una buena idea. Es posible con Qt, pero poco probable si no tienes experiencia escribiendo código portátil y/o eres nuevo en Qt.

Cuestiones relacionadas