Marco KDE de Qt6

Durante 25 años, la comunidad de KDE ha estado usando Qt para desarrollar varios productos de software libre. Estos incluyen el entorno de escritorio Plasma, herramientas creativas como Krita y Kdenlive, aplicaciones educativas como GCompris, suites de trabajo en grupo como Kontact y muchas otras aplicaciones, utilidades y widgets.

Qt es conocido por su rica API multiplataforma de alta calidad. Sin embargo, no cubre todos los casos de uso. De hecho, esto es imposible. Entonces, para llenar los vacíos, KDE creó un código que se ha fusionado en muchos proyectos de KDE a lo largo del tiempo. Para facilitar la reutilización de estas soluciones probadas en batalla fuera de los proyectos de KDE, KDE comparte este código en forma de bibliotecas modulares.

A estas bibliotecas las llamamos frameworks de KDE .

Actualmente, hay 83 marcos de KDE que brindan una amplia gama de funcionalidades. Por ejemplo, KNotifications le permite crear notificaciones emergentes en Windows, macOS, Linux y Android sin escribir código específico de la plataforma. Otros marcos proporcionan contenedores alrededor de bibliotecas o interfaces especializadas, haciéndolos más fáciles de usar para los programadores de Qt. Por ejemplo, el marco bluez-qt proporciona una interfaz de estilo Qt para la API bluez D-Bus. Algunos marcos son colecciones de clases útiles, como KWidgetsAddons, que contiene muchos widgets útiles que no forman parte de QtWidgets.

Como desarrollador de Qt, es posible que, sin saberlo, haya utilizado software creado con el marco de trabajo de KDE. El marco de resaltado de sintaxis que impulsa las aplicaciones de KDE como Kate y KDevelop también se usa en Qt Creator.

 

Hay muchos beneficios al utilizar el marco de trabajo de KDE. En esta serie, examinaremos algunos de ellos, brindando ejemplos prácticos y del mundo real para ayudarlo a aprender cómo integrar el marco de trabajo de KDE en sus propios productos.

En el primer blog de esta serie, quiero presentarles KConfig.

KConfig es uno de los marcos más utilizados. Permite a los desarrolladores almacenar y recuperar datos de configuración en el sistema de archivos. Su funcionalidad básica es similar a la propia QSettings de Qt, pero proporciona alguna funcionalidad adicional.

Antes de que podamos usar KConfig en nuestra aplicación, debemos agregarlo a nuestro sistema de compilación. Para CMake, esto se hace de la siguiente manera:

Si su aplicación usa QMake, solo necesita: 

 El siguiente código muestra el uso básico de KConfig:

Primero, cree un objeto KConfig. De forma predeterminada, la configuración se guarda en un archivo con el nombre especificado en QStandardPaths::GenericConfigLocation, pero se puede ajustar la ubicación exacta.

Las entradas de configuración están organizadas en grupos. Cada objeto KConfig puede contener varios grupos, y cada grupo contiene varios pares clave-valor que contienen datos de configuración.

Para leer entradas de configuración, primero cree un KConfigGroup a partir de un objeto KConfig, luego use readEntry para consultar una clave específica. readEntry toma un valor predeterminado opcional, que se utilizará cuando no se almacenen datos para esa clave.

Para escribir configuraciones, use writeEntry. Los datos no se escriben en el disco inmediatamente. Cuando se destruye el objeto KConfigGroup, se realizarán todas las operaciones de escritura pendientes. Se puede forzar la escritura en el disco mediante el método sync().

Hasta ahora, todo esto es posible a través de QSettings. Entonces, ¿cuáles son los beneficios de usar KConfig?

Tanto QSettings como KConfig permiten la configuración en cascada. Aquí, los valores de configuración se leen desde dos ubicaciones: valores de configuración de todo el sistema y una ubicación por usuario. Esto permite que se definan los valores predeterminados de todo el sistema y que los usuarios anulen sus valores. Sin embargo, en un entorno empresarial esto puede no ser deseable. KConfig permite a los administradores del sistema marcar la configuración como inmutable, evitando que los usuarios anulen los valores predeterminados proporcionados. Esto no requiere ningún cambio de código en la aplicación. Las aplicaciones pueden consultar si una clave está marcada como inmutable para deshabilitar la parte de la interfaz de usuario asociada.

A veces, dos procesos acceden al mismo archivo de configuración. Aquí es importante notificar a un proceso cuando otro proceso cambia la configuración para que pueda reaccionar en consecuencia. KConfigWatcher permite notificar a otro proceso sobre cambios de configuración. Lo hace a través de D-Bus. Por lo tanto, solo funciona en sistemas donde D-Bus está disponible (es decir, Linux).

Este simple uso de KConfig (y QSettings) tiene muchas desventajas. La biblioteca/compilador no tiene información sobre las estructuras de datos de configuración. La mayor parte del acceso se realiza mediante identificadores de cadena. Estos son propensos a errores tipográficos, que el compilador no puede verificar en el momento de la compilación. Tampoco hay información sobre el tipo de datos de la entrada de configuración, por ejemplo, si la entrada es una sola cadena, una lista de cadenas o un número entero. Otro problema es que KConfig no se puede usar directamente en un contexto QML.

KConfig proporciona el mecanismo KConfigXT para resolver estos dos problemas. Se basa en una descripción XML de la estructura de datos de configuración. En tiempo de compilación, esta información se usa para generar las clases de C++ que se usan para acceder a la configuración. Esta clase también puede exponer la entrada como una propiedad para que QML pueda usarla directamente.

El ejemplo anterior expresado como una descripción XML se ve así:

Esto se almacena en el archivo myappsettings.kcfg.

El comportamiento de KConfigXT está controlado por un archivo de configuración separado myappsettings.kcfgc:

Entonces el ejemplo de código anterior se convierte en:

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/yanchenyu365/article/details/130492156
Recomendado
Clasificación