linux qt_qpa_platformtheme - ¿Qué debería elegir: GTK+o Qt?





qtcurve archlinux (9)


Qt. No solo está orientado a objetos, está orientado a objetos "buenos". Se basa en un "subconjunto" de C ++ que no depende de la oscuridad de C ++ (pero se te permite seguir con ellos, si te apetece el masoquismo;)).

Tiene un fuerte impulso ahora que Nokia lo compró (en realidad, Nokia lo hizo ~ 2/3 años atrás). Va a estar en todos los dispositivos móviles Nokia e Intel (teléfonos inteligentes, netbooks, tabletas).

Es la columna vertebral de KDE, por lo que es muy maduro, pero está diseñado de una manera muy flexible, que hace posible que TODAY sea compatible con todas las últimas "cosas interesantes" que debería tener un marco de GUI más que suficiente.

Ve a por ello.

¿Puede alguien sugerir cuáles son los mejores usos para esas bibliotecas hoy? ¿Es solo GUI, o tienen soporte para bases de datos, XML, redes, hilos, etc.?

Estaba leyendo sobre ellos y consideré comenzar a aprender / usar uno de ellos.

¿Cuál es el más común? ¿Cual es la diferencia entre ellos? ¿Por qué elegirías uno sobre el otro?




Probablemente depende de lo que quieras hacer. Recomendaría Qt, porque es más que GUI, tiene bonitos enlaces de Python (también lo hace Gtk), y las propias bibliotecas de GUI son (subjetivamente hablando) más agradables que Gtk.

Gtk es, por otro lado, más común en el mundo de Linux, por lo que probablemente pueda obtener más ayuda en la web. La razón de la generalización de Gtk probablemente tiene más que ver con Gnome y Ubuntu, que con los méritos técnicos, pero si quieres que tu software se mezcle bien con esos dos, lo lograrás más fácilmente con Gtk.




Qt, por supuesto, tiene una sólida base de datos, red, soporte de subprocesos, etc ... Hace mucho más que solo GUI multiplataforma (y lo hace bastante bien).

Lo recomendaría sobre GTK +.




También parece que Nokia está a punto de usar Qt en todas partes, como en Maemo




Como parece que se dirige principalmente a Linux, la elección depende principalmente del lenguaje de programación que desee utilizar.

Si codifica en C, entonces obviamente vaya por GTK +

Si codifica en C ++, vaya a Qt; de lo contrario, necesitará Gtkmm (un contenedor de C ++ sobre GTK +)

Si codifica en Python, tanto GTK + como Qt tienen enlaces para el lenguaje: vea PyGtk , PyQt y PySide (el lanzado por Nokia).

Si codifica en Java, Qt ya no es una opción viable ya que Nokia suspendió Qt Jambi (las vinculaciones de Java para Qt).

Además, Qt es más de primera categoría en cuanto a su scenegraph QGraphicsScene API, su motor de scripting construido sobre Javascript Core (el motor que impulsa WebKit), su máquina de estado y marco de animaciones, y la interfaz de usuario declarativa .

GTK + no ofrece mucho, aunque puedes usar Clutter junto con él.

Si está buscando específicamente las funciones DB, XML (GTK + tiene un analizador sintáctico para un subconjunto de XML) y de subprocesamiento (GTK + tiene GLib ), entonces Qt ofrecerá todo eso en QtSql , QtXml y QtConcurrent .

Con todo, diría que Qt es una elección segura. Pero GTK + también es muy capaz.

No estoy seguro de que obtenga una respuesta clara para su pregunta, lo que explica por qué algunas personas siguen prefiriendo Gnome a KDE o viceversa. Elija lo que funciona mejor para usted.

PD: planeo apuntar a Symbian, luego ir a Qt.

EDITAR: Algo que también es genial con Qt es QtWebKit: trae WebKit en su aplicación Qt. Otros están integrando WebKit en su aplicación utilizando, por ejemplo, Awesomium o Berkelium.




Simplemente agregando las ventajas de QT a otras respuestas ... QT tiene una gran documentación, su propio creador de IDE y GUI y mejora C ++ con algunos conceptos nuevos, como tragamonedas / señales (básicamente, eventos).

No soy un desarrollador GTK, así que no puedo compararlos con el mundo GTK :(




Si desea que su aplicación se ejecute en iOS, Android, Blackberry, otras plataformas móviles, Windows, Mac OSX y Linux, use Qt.

qt-project.org




He usado GTK +, QT y wxWidgets antes. Aquí hay un breve resumen:

Para mi primer proyecto de UI multiplataforma decidí optar por wxWidgets principalmente porque en ese momento la licencia no era tan restrictiva como QT (QT era GPL y solo para Linux) y tenía una interfaz de usuario específica de la plataforma (a diferencia de GTK). El proyecto funcionó bien, pero hubo bastantes problemas para compilarlo y ejecutarlo correctamente en otras plataformas: a veces algunos eventos se activaban de forma diferente y tal. También GDI en wxWidgets fue bastante lento.

Luego utilicé GTK para un proyecto diferente en Python. Para esto utilicé las ataduras de pitón y todo funcionó más o menos suavemente. No me gustó el hecho de que la interfaz de usuario no pareciera nativa en Windows y Mac, y también cuando se ejecuta una aplicación GTK + siempre se depuran cargas de advertencias CRÍTICAS que parecen bien ignorar. : S

Finalmente, hice un proyecto de QT muy simple ahora que Nokia lo adquirió y fue brillante. Lo mejor de los tres. En primer lugar, si no eres un antiguo alumno que prefiere VI o Emacs, QtCreator es brillante. Realmente me encanta VI y lo utilicé durante años, pero prefiero mucho QtCreator para proyectos C ++ QT. En cuanto a la biblioteca, también me gustó mucho la documentación y las API proporcionadas. QT tiene un concepto de slots y señales que introducen nuevas palabras clave de C ++ y un preprocesador. Básicamente, después de leer un tutorial lo obtendrá fácilmente y comenzará a encantarlo. Ahora estoy haciendo el desarrollo de iPhone y se siente un poco como el paradigma de IU de Cocoa / Interface Builder.

Resumen: iría por QT sin problemas. La licencia es bastante buena y el SDK y la documentación son realmente buenos.




Lo más importante que define POSIX 7

  1. API C

    Amplia grandemente ANSI C con cosas como:

    • Más operaciones de archivo: mkdir , dirname , symlink , symlink readlink , link ( link duros), poll , sync
    • proceso y subprocesos: fork , execl , pipe , sem_* , memoria compartida ( shm_* ), kill , parámetros de programación ( nice , sched_ ), sleep
    • redes
    • expresiones regulares
    • gestión avanzada de la memoria: mmap , mlock , mprotect , madvise

    Esas API también determinan los conceptos subyacentes del sistema de los que dependen, por ejemplo, fork requiere un concepto de proceso.

    Existen muchas llamadas al sistema Linux para implementar una función API POSIX C específica y hacer que Linux sea compatible, por ejemplo, sys_read , sys_read , ...

    Implementación principal de escritorio de Linux: glibc, que en muchos casos solo proporciona un envoltorio superficial para las llamadas al sistema.

  2. Utilidades CLI

    Por ejemplo: cd , ls , echo , ...

    Muchas utilidades son front end de front-shell para una función de C API correspondiente, por ejemplo, mkdir .

    Implementación de escritorio Linux importante: GNU Coreutils para los pequeños, proyectos GNU separados para los grandes: sed , grep , awk , ... Bash implementa algunas utilidades CLI como integradas .

  3. Lenguaje de shell

    Por ejemplo, a=b; echo "$a" a=b; echo "$a"

    Implementación importante de escritorio de Linux: GNU Bash.

  4. Variables de entorno

    Ej .: HOME , PATH .

  5. Estado de salida del programa

    ANSI C dice 0 o EXIT_SUCCESS para el éxito, EXIT_FAILURE para el error y deja el resto de la implementación definida.

    POSIX añade:

  6. Expresión regular

    Hay dos tipos: BRE (Básico) y ERE (Extendido). Básico está en desuso y solo se mantiene para no romper las API.

    Éstas se implementan mediante las funciones de la API de C y se utilizan en todas las utilidades de CLI, por ejemplo, grep acepta BRE de forma predeterminada y ERE con -E .

    Ej: echo 'a.1' | grep -E 'a.[[:digit:]]' echo 'a.1' | grep -E 'a.[[:digit:]]'

    Implementación importante de Linux: glibc implementa las funciones en regex.h que los programas como grep pueden usar como backend.

  7. Directorio de directorio

    Por ejemplo: /dev/null , /tmp

    El FHS Linux amplía enormemente POSIX.

  8. Filenames

    • / es el separador de ruta
    • NUL no puede ser usado
    • . es cwd , .. padre
    • nombres de archivos portátiles
      • usar a lo sumo 14 caracteres como máximo y 256 para la ruta completa
      • solo puede contener: a-zA-Z0-9._-

    Ver también: ¿qué es el cumplimiento de posix para el sistema de archivos?

  9. Convenciones de la API de la utilidad de línea de comandos

    No obligatorio, utilizado por POSIX, pero casi en ninguna otra parte, especialmente no en GNU. Pero cierto, es demasiado restrictivo, por ejemplo, solo banderas de una sola letra (por ejemplo, -a ), no hay versiones con doble guión largo (por ejemplo, --all ).

    Algunas convenciones ampliamente utilizadas:

    • - significa stdin donde se espera un archivo
    • -- termina las banderas, por ejemplo, ls -- -l para listar un directorio llamado -l

    Vea también: ¿Existen estándares para los parámetros y argumentos de la línea de comandos de Linux?

¿Quién se ajusta a POSIX?

Muchos sistemas siguen a POSIX de cerca, pero pocos son certificados por Open Group, que mantiene el estándar. Los notables certificados incluyen:

  • OS X (Apple) X significa tanto para 10 como para UNIX. Fue el primer sistema POSIX de Apple, lanzado alrededor del año 2001. Vea también: ¿OSX es un sistema operativo POSIX?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

La mayoría de las distribuciones de Linux son muy compatibles, pero no están certificadas porque no quieren pagar la verificación de cumplimiento. K-UX de Inspur y EulerOS de Huawei son dos ejemplos certificados.

La lista oficial de sistemas certificados se encuentra en: https://www.opengroup.org/openbrand/register/ y también en la página wiki .

Windows

Windows implementó POSIX en algunas de sus distribuciones profesionales.

Como era una característica opcional, los programadores no podían confiar en ella para la mayoría de las aplicaciones de usuario final.

El soporte fue obsoleto en Windows 8:

En 2016 se anunció una nueva API oficial similar a Linux llamada "Subsistema de Windows para Linux". Incluye llamadas al sistema Linux, ejecución de ELF, partes del sistema de archivos /proc , Bash, GCC, (¿TODO es probable que glibc?), apt-get y más: https://channel9.msdn.com/Events/Build/2016/P488 por lo que creo que permitirá a Windows ejecutar gran parte de POSIX, si no todos. Sin embargo, se enfoca en desarrolladores / implementación en lugar de usuarios finales. En particular, no había planes para permitir el acceso a la GUI de Windows.

Descripción histórica de la compatibilidad oficial con Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin es un conocido proyecto de terceros de GPL que "proporciona una funcionalidad sustancial de API POSIX" para Windows, pero requiere que "reconstruya su aplicación desde la fuente si desea que se ejecute en Windows". MSYS2 es un proyecto relacionado que parece agregar más funciones a Cygwin.

Androide

Android tiene su propia biblioteca de C (Bionic) que no es totalmente compatible con POSIX a partir de Android O: ¿Es compatible con POSIX de Android?

Nivel de bonificación

La base estándar de Linux amplía aún más POSIX.

Utilice los índices sin marcos, son mucho más fáciles de leer y buscar: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Obtenga una versión completa en zip de las páginas HTML para grepping: ¿Dónde está la lista de las funciones de la API POSIX C?





linux qt gtk