Saltar a contenido

Complementos de QField

QField tiene un marco de complemento QML/Javascript a través del cual se pueden programar funcionalidades y características adicionales.

Tipos de complementos

Los complementos se pueden servir de dos maneras:

  • como un complemento específico del proyecto que estará activo durante la duración de una sesión del proyecto determinado;
  • como un complemento de aplicación que se activará cuando se inicie QField.

Nota

Se muestra un cuadro de diálogo de permiso antes de activar un complemento, brindándole la posibilidad de otorgar o denegar complementos individuales.

Complementos de proyecto

Los complementos de proyecto se despliegan como un archivo sidecar de un archivo de proyecto determinado y deben compartir el mismo nombre de archivo con extensión .qml. nombre de archivo con extensión .qml. Por ejemplo, si su archivo de proyecto es "tree_inventory_qfield.qgs", el archivo QML principal del complemento debe ser "tree_inventory_qfield.qml".

Para los proyectos en la nube, basta con añadir el archivo QML correspondiente en la carpeta local del proyecto en la nube y cargar el archivo recién añadido en QGIS utilizando qfieldsync. Este método asegura un complemento sin problemas y la actualización de los dispositivos en el campo.

Para proyectos que no sean en la nube, consulte la página de documentación de QField storage handling documentation page para aprender a importar proyectos en dispositivos.

Complementos de la aplicación

Los complementos de la aplicación se instalan a través de una ventana emergente de complementos a la que se accede desde el panel Configuración de QField de QField. Basta con pulsar el botón "Instalar complemento desde URL" y pegar una URL que apunte a un archivo de complemento comprimido. archivo comprimido del complemento.

Una vez instalado, el complemento aparecerá en la lista de complementos que se encuentra en la ventana emergente, con un interruptor para activar el complemento.

Autores de complementos

Los complementos QField de scripting requieren conocimientos básicos de QML y Javascript. Qt ofrece un útil tutorial introductorio que merece la pena leer.

Una vez que te hayas familiarizado con el entorno QML, estarás listo para empezar. Este es un ejemplo que mostrará un mensaje de bienvenida al cargar correctamente un complemento QField:

import QtQuick

import org.qfield 1.0
import Theme 1.0

Item {
  Component.onCompleted: {
    iface.mainWindow().displayToast('Hello world!')
  }
}

Al igual que los complementos de QGIS, QField ofrece un objeto «iface» que expone una serie de funcionalidades que los complementos pueden aprovechar. que pueden aprovechar los complementos.

La función iface.mainWindow() apunta a la instancia QML ApplicationWindow, donde los complementos pueden emparentar sus popups y elementos a través de iface.mainWindow().contentItem y tener acceso a a funcionalidades como mostrar mensajes tostados usando iface.mainWindow().displayToast(text).

La función iface.mapCanvas() proporciona acceso al objeto map canvas y a sus propiedades, incluyendo el objeto crucial iface.mapCanvas().mapSettings donde la extensión, escala, etc. pueden ser recuperados y modificados. También puede utilizarse para crear elementos superpuestos al lienzo del mapa.

La función iface.findItemByObjectName() permite a los complementos acceder a elementos de la a través de un nombre de objeto coincidente. Puede ver estos elementos consultando el código fuente relevante.

Además, varias funciones de iface permiten a los complementos añadir armoniosamente elementos dentro de la interfaz interfaz QField: iface.addItemToPluginsToolbar(item), iface.addItemToMainMenuActionsToolbar(item), y iface.addItemToCanvasActionsToolbar(item). Estas funciones garantizan que los elementos por múltiples complementos coexistirán felizmente.

Además, los autores de complementos tienen a su disposición una serie de clases de utilidades que permiten la obtención de capas vectoriales del proyecto, entre otras cosas. proyecto, edición de capas vectoriales, etc. Para familiarizarse con ellas, visite el [directorio de clases de utilidades] del código fuente de QField (https://github.com/opengisch/QField/tree/master/src/core/utils).

Un complemento que proporciona la previsión meteorológica como una superposición al lienzo del mapa de QField está disponible en este repositorio github como un ejemplo práctico ejemplo práctico del que aprender.

Creación de un complemento comprimido

Un complemento comprimido válido debe contener un archivo main.qml en la raíz del archivo zip, que será utilizado por QField para activar el complemento. También se puede utilizar un metadata.txt opcional para proporcionar detalles básicos como el nombre del complemento, una breve descripción y el nombre del autor. Un ejemplo típico del contenido de metadata.txt sería el siguiente:

[general]
name=Hello World Plugin
description=This is simple and brief description.
author=OPENGIS.ch
icon=logo.svg