Qt (Español)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Estado de la traducción: esta traducción de Qt fue revisada el 2020-06-09. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Qt es una aplicación multiplataforma y herramientas de widget que utiliza el estandar C++ pero quehace un uso extensivo de un generador especial de código (llamado Meta Object Compiler o moc) junto con varios macros para enriquecer el lenguaje. Algunas de sus características más importantes son:

  • Se ejecuta en la mayoría de entornos de escritorio y muchos de los entornos móviles.
  • Soporte de internacionalización extendido.
  • Una librería completa que provee acceso a base de datos SQL, parseo XML, tratamiento de hilos, soporte de red y una interfaz de programación de aplicaciones (API) multiplataforma unificada para el manejo de archivos.

El framework Qt es la base del software comunitario KDE como de otras aplicaciones importantes de código abierto y propietarias como VLC, VirtualBox, Mathematica y muchas otras.

Instalación

Qt 5.x está disponible en los repositorios oficiales. Versiones tradicionales de Qt (4.x y 3.x) estan disponibles desde el Arch User Repository (Español). Pueden instalarse con los siguientes paquetes:

  • Qt 5.x está disponible en el paquete qt5-base con su documentación en el paquete qt5-doc.
  • Qt 4.x está disponible en el paquete qt4AUR con su documentación en el paquete qt4-docAUR del AUR.
  • Qt 3.x está disponible desde el AUR en el paquete qt3AUR con su documentación en el paquete qt3-docAUR del AUR.

Herramientas Qt por defecto

Instalando qtchooserAUR puede crear binarios Qt en /usr/bin (p. ej. qmake), esta apunta por defecto a las versiones Qt5 (p. ej. qmake-qt5), que apunten a versiones anteriores de dichas herramientas (p. ej. qmake-qt4 o qmake-qt3).

Advertencia: qtchooserAUR ahora está en conflicto con qt5-base. Puede instalarlo en /usr/local si realmente lo necesita pero no está oficialmente soportado. Vea FS#51308.

Utilizar variables de entorno

Para definir las herramientas Qt por defecto puede crear la variable de entorno QT_SELECT. Por ejemplo, para utilizar Qt4 establezca QT_SELECT=4.

Utilizar ficheros de configuración

Puede establecer las herramientas Qt por defecto creando un enlace simbólico ~/.config/qtchooser/default.conf a uno de los ficheros .conf que están en el directorio /etc/xdg/qtchooser/. Por ejemplo, para Qt4 creé un enlace simbólico desde /etc/xdg/qtchooser/4.conf a ~/.config/qtchooser/default.conf:

$ ln -s /etc/xdg/qtchooser/4.conf ~/.config/qtchooser/default.conf

Aspecto

Qt5

Qt5 decide qué estilo usar basandose en que entorno de escritorio se esta utilizando:

  • En KDE Plasma actualmente utiliza el estilo Qt seleccionado. Se puede configurar utilizando los Ajustes del sistema KDE (systemsettings5). Estos ajustes se pueden encontrar en Aspecto > Estilo de las aplicaciones > Estilo de la aplicación.
  • Otros entornos de escritorio utilizan Fusion.

Para obligar un estilo específico puede establecer la variable de entorno QT_STYLE_OVERRIDE. Establezca la variable a gtk2 si quiere utilizar el tema GTK.

Nota: Necesitará instalar los plugins de aspecto de Qt mencionados abajo para conseguir el estilo GTK

Las aplicaciones Qt5 también soportan la bandera -style que se puede utilizar para lanzar aplicaciones Qt5 con un estilo específico.

Los siguientes aspectos están incluidos en Qt5: Fusion, Windows. Otros se pueden instalar desde los repositorios oficiales:

  • Breeze — Arte, estilos y recursos para el estilo visual Breeze para el escritorio Plasma Desktop.
https://invent.kde.org/plasma/breeze || breeze
  • Oxygen — Estilo KDE Oxygen.
https://invent.kde.org/plasma/breeze || oxygen
  • QtCurve — Un conjunto de estilos de widgets configurables para KDE y Gtk.
https://invent.kde.org/system/qtcurve || qtcurve-qt5
  • Adwaita-Qt — Estilos para conseguir que las aplicaciones Qt se parezcan al entorno GNOME.
https://github.com/MartinBriza/adwaita-qt || adwaita-qtAUR
  • Qt style plugins — Plugins para estilos adicionales de Qt5 incluido GTK, Cleanlooks, Motif, Plastique.
https://code.qt.io/cgit/qt/qtstyleplugins.git || qt5-stylepluginsAUR
  • Kvantum — Motor de temas basados en SVG personalizable con una gran variedad de estilos incorporados incluido imitaciones de algunos de los temas más populares de GTK como Adapta, Arc, Ambiance
https://github.com/tsujan/Kvantum/tree/master/Kvantum || kvantum-qt5

Qt4

Las aplicaciones Qt4 intentarán imitar el comportamiento del entorno de escritorio en el que se ejecuta a no haya ser que encuentren algunos problemas o ajustes codificados.

  • En KDE Plasma actualmente utiliza el estilo Qt seleccionado. Se puede configurar utilizando los Ajustes del sistema KDE (systemsettings5). Estos ajustes se pueden encontrar en Aspecto > Estilo de las aplicaciones > Estilo de la aplicación.
  • Otros entornos de escritorio utilizan Windows.

Para aquellos que quieran cambiar el aspecto y la sensación de las aplicaciones Qt4 la herramienta GUI de configuración Qt (qtconfig-qt4) está proporcionada por el paquete qt4AUR. Ofrece una interfaz simple para configurar la apariencia de las aplicaciones Qt4 incluido el estilo, colores, fuentes y muchas más opciones.

Nota: Si utiliza el estilo GTK los ajustes de color y fuentes se ignorarán y se heredarán de GTK 2.

Qt mantiene toda la información de configuración en /etc/xdg/Trolltech.conf (todo el sistema) o en ~/.config/Trolltech.conf (específico por usuario). Es difícil navegar por el archivo porque contiene mucha información que no está relacionada con la apariencia pero cualquier ajuste que añada al final del archivo sobrescribirá cualquier valor previo (asegúrese de que añade sus modificaciones debajo de la cabecera de [Qt]).

Por ejemplo, para cambiar el tema a QtCurve añada:

~/.config/Trolltech.conf
...
[Qt]
style=QtCurve

Los siguientes estilos están incluidos en Qt4: CDE, Cleanlooks, GTK, Motif, Plastique, Windows. Otros se pueden instalar desde los repositorios oficiales o desde el AUR (muchos están escritos para el escritorio KDE Plasma):

  • Breeze — Arte, estilos y recursos para el estilo visual Breeze para el escritorio Plasma Desktop.
https://invent.kde.org/plasma/breeze || breeze-kde4AUR
  • Adwaita-Qt — Estilos para conseguir que las aplicaciones Qt se parezcan al entorno GNOME.
https://github.com/MartinBriza/adwaita-qt || adwaita-qt4AUR

Plantillas de estilos Qt

Una forma interesante para personalizar el aspecto y la sensación de una aplicación Qt es utilizar plantillas de estilos que son simples archivos CSS. Utilizando plantillas de estilos puede cambiar la apariencia de cada widget de la aplicación.

Para ejecutar una aplicación con un estilo diferente simplemente ejecute:

$ qt_application -stylesheet style.qss

Para más información en plantillas de estilos Qt vea la documentación oficial o otros tutoriales. Como ejemplo de una plantilla vea esta modificación de Dolphin.

GTK y Qt

Si tiene aplicaciones GTK y Qt puede que no se vean exactamente bien unidas. Si desea que su estilo GTK coincida con sus estilos Qt lea look uniforme para las aplicaciones Qt y GTK.

Configuración de aplicaciones Qt5 en otros entornos que KDE Plasma

A diferencia de Qt4, Qt5 no tiene una utilidad qtconfig para configurar fuentes, iconos y estilos. En lugar de eso Qt5 intentará utilizar los ajustes del entorno de escritorio en ejecución. En KDE Plasma o GNOME esto funciona bien pero en otros entornos de escritorio menos populares o gestores de ventanas puede resultar que los iconos desaparezcan en las aplicaciones Qt5. Una forma de resolver esto es ejecutar un falso entorno de escritorio estableciendo XDG_CURRENT_DESKTOP=KDE o GNOME y después utilizar la correspondiente aplicación de configuración para establecer el conjunto deseado de iconos.

Otra solución proporcionada por el paquete qt5ct que proporciona un Qt5 QPA independiente del entorno de escritorio y de la herramienta de configuración. Después de instalar el paquete ejecute qt5ct para establecer un tema de iconos y establecer la variable de entorno QT_QPA_PLATFORMTHEME=qt5ct para que las aplicaciones Qt tomen dichos ajustes. Alternativamente puede utilizar --platformtheme qt5ct como argumento de la aplicación Qt5.

Si se recibe los siguientes errores y algunos iconos no aparecen en algunas aplicaciones instale oxygen y oxygen-icons:

Icon theme "oxygen" not found.
Icon theme "oxygen" not found.
Error: standard icon theme "oxygen" not found!

Desarrollo

Plataformas soportadas

Qt soporta la mayoría de plataformas que están disponibles a dia de hoy, incluso las mas oscuras, con más ports apareciendo de vez en cuando. Para una lista más completa vea el artículo de la Wikipedia Qt.

Android

Antes de nada necesita el Android SDK y el NDK. Instale el SDK android-sdkAUR (algunas herramientas se han quitado) o android-sdk-25.2.5AUR[enlace roto: package not found] y el NDK android-ndkAUR desde el AUR o utilizando Android Studio.

SDK requiere de OpenJDK en su version <= 8. En estos momentos está disponibles el OpenJDK en su versión 7 y 8 pero, para evitar problemas de construcción más tarde, utilice este último.

Lo siguiente que va a necesitar es Qt 5 para Android. Puede instalarlo desde el AUR como se describe debajo o construirlo usted mismo. Puede encontrar las instrucciones para la compilación están en la wiki de Qt.

En caso de problemas puede querer visitar los problemas conocidos.

O puede utilizar un instalador Qt. Para un listado completo vea los instaladores oficiales Qt.

Herramientas

Las siguientes son herramientas oficiales Qt:

  • Qt Creator — Un IDE multiplataforma a medida de Qt que soporta todas sus características.
https://doc.qt.io/qtcreator/ || qtcreator
  • Qt Linguist — Un conjunto de herramientas que acelera la traducción y la internacionalización de aplicaciones Qt.
https://doc.qt.io/qt-5/qtlinguist-index.html || Qt 5: qt5-tools, Qt 4: qt4AUR
  • Qt Assistant — Un lector de documentación redistribuido y configurable para los archivos qch de Qt.
https://doc.qt.io/qt-5/qtassistant-index.html || Qt 5: qt5-tools, Qt 4: qt4AUR
  • Qt Designer — Un potente constructor de diseños y formularios multiplataforma con GUI para los widgets Qt.
https://doc.qt.io/qt-5/qtdesigner-manual.html || Qt 5: qt5-tools, Qt 4: qt4AUR
  • Qt Quick Designer — Un editor visual para los archivos QML que soportan WYSIWYG. Le permite rápidamente diseñar y construir aplicaciones rápidas Qt y componentes desde cero.
https://doc.qt.io/qtcreator/creator-using-qt-quick-designer.html || qtcreator
  • qmlscene — Una herramienta para cargar documentos QML que hace que desarrollar y depurar aplicaciones QML rápidamente sea fácil.
https://doc.qt.io/qt-5/qtquick-qmlscene.html || Qt 5: qt5-declarative, Qt 4 QML Viewer: qt4AUR
  • qmake — Una herramienta que ayuda a simplificar el proceso de compilación para el desarrollo de proyectos compatibles con distintas plataformas, similar a cmake pero con menos y mas específicas opciones para aplicaciones Qt.
https://doc.qt.io/qt-5/qmake-manual.html || Qt 5: qt5-base, Qt 4: qt4AUR
  • uic — Una herramienta que lee los ficheros XML *.ui y genera los ficheros C++ correspondientes.
https://doc.qt.io/qt-5/uic.html || Qt 5: qt5-base, Qt 4: qt4AUR
  • rcc — Una herramienta que se utiliza para incrustar recursos (como fotos) dentro de la aplicación Qt en el proceso de compilación. Funciona generando un archivo fuente C++ que contiene los datos especificados en un archivo de recursos Qt (.qrc).
https://doc.qt.io/qt-5/rcc.html || Qt 5: qt5-base, Qt 4: qt4AUR
  • moc — Una herramienta que maneja las extensiones C++ de Qt (las señales y el mecanismos de ranuras, la información de tipos en tiempo de ejecución, el sistema de propiedades dinámico, etc.).
https://doc.qt.io/qt-5/moc.html || Qt 5: qt5-base, Qt 4: qt4AUR

Enlaces

Qt tiene enlaces de todos los lenguajes más populares, para una lista completa vea esta lista.

Los siguientes ejemplos muestran un pequeño '¡Hola mundo!' en una ventana.

C++

hello.cpp
#include <QApplication>
#include <QLabel>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QLabel hola("¡Hola mundo!");

    hola.show();
    return app.exec();
}

QML

hello.qml
import QtQuick 2.3

Rectangle {
    id: page
    width: 400; height: 100
    color: "lightgray"

    Text {
        id: holaText
        text: "¡Hola mundo!"
        anchors.horizontalCenter: page.horizontalCenter
        anchors.verticalCenter: page.verticalCenter
        font.pointSize: 24; font.bold: true
    }
}

Python (PyQt)

hello-pyqt.py
import sys
from PyQt5 import QtWidgets

app = QtWidgets.QApplication(sys.argv)
label = QtWidgets.QLabel("¡Hola mundo!")

label.show()
sys.exit(app.exec_())

Python (PySide2)

hello-pyside2.py
import sys
from PySide2.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
label = QLabel("¡Hola mundo!")

label.show()
sys.exit(app.exec_())

C#

Vea QtSharp.

Solución de problemas

Desactivar/Cambiar el comportamiento del log de journal Qt

Cuando se utiliza When using KDE y/o cualquier otra información de depuración Qt del entorno de escritorio es frecuente que se guarde en el registro de systemd.

Establezca QT_LOGGING_RULES como una variable de entorno para cambiar este comportamiento, p. ej. para desactivar completamente el registro:

/etc/environment
QT_LOGGING_RULES='*=false'

Para desactivar solo el registro del depurador utilice QT_LOGGING_RULES="*.debug=false".

Tema de iconos no se aplica

Desde Qt 5.1 el soporte SVG se ha movido a un módulo. Desde que qt5-base no depende de qt5-svg puede ocurrir que qt5-base este instalado pero qt5-svg no. Esto causa un comportamiento no deseado en el comportamiento con el tema de iconos. Desde que no se soporta SVG los iconos se omiten silenciosamente y hace que parezca que el tema de iconos no se esta utilizando. Instalando explícitamente qt5-svg soluciona el problema.

El tema no se aplica a las aplicaciones root

Como el fichero de temas del usuario ($XDG_CONFIG_HOME/Trolltech.conf) no se puede leer desde otras cuentas el tema seleccionado no se aplicará a las aplicaciones X que se ejecuten como root. Las posibles soluciones incluyen:

  • Creación de enlaces simbólicos, p. ej.
    # ln -s /home/[username]/.config/Trolltech.conf /etc/xdg/Trolltech.conf
  • Configurar un archivo de tema para todo el sistema: /etc/xdg/Trolltech.conf
  • Ajustar el tema como root.

Estilo Qt4 no se respeta

Si las aplicaciones puras Qt4 (no KDE) no toman su estilo seleccionado Qt4 probablemente necesite decirle a Qt4 cómo encontrar los estilos de KDE (Oxygen, Phase etc.). Necesita ajustar la variable de entorno QT_PLUGIN_PATH. Por ejemplo:

QT_PLUGIN_PATH=$HOME/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/

qtconfig-qt4 debe ser capaz de encontrar sus estilos de kde y todo volverá a verse bien de nuevo.

Alternativamente puede crear un enlace simbólico desde su directorio de estilos de Qt4 a uno de los estilos de KDE4:

# ln -s /usr/lib/{kde,qt}4/plugins/styles/theme_name

Todas las aplicaciones basadas en Qt5 fallan al ejecutarse después de una actualización de Qt5

Si recibe un error similar a este

Qt FATAL: Cannot mix incompatible Qt library (version 0x50900) with this library (version 0x50901)

probablemente esté utilizando una plataforma de temas Qt5 o un plugin de estilo que no se ha reconstruido en la última versión de Qt5. Normalmente estos utilizan cabeceras privadas de Qt, es decir, que dependen de una versión exacta de Qt y no simplemente una coincidencia de nombre. Intente adivinar que estilo está utilizando estableciendo las variables de entorno QT_STYLE_OVERRIDE y QT_QPA_PLATFORMTHEME y reconstruya el paquete del AUR que lo proporciona.

Véase también