Aller au contenu

Formulaire d'attributs

QField creates forms similar to, but not equal to QGIS. The field widgets from QGIS are supported on a best effort basis and optimized for the mobile use.

Type de widget Support Notes
Edition de texte - HTML is not supported
- Numerical input is enforced based on the type.
Case à cocher
Value Map
Caché
Fichier joint This field is combined with camera integration. It is also able to open other files like pdf and doc (if you have an appropriate viewer) Attachment (photo settings)
Date Heure
Range
Référence de relation
Outil Relation
Valeur relationnelle
UUID Generator
QML / HTML Widget
Autres Funding

Modifiable

The editable flag of fields is respected.

Se souvenir des dernières valeurs

QField offers a much more fine-grained control over the last used values and ignores the QGIS setting.

Suppress attribute form

The setting suppress attribute form is directly applied to the QField form.

Glisser-déposer les formulaires du designer

Les groupes et onglets venant des formulaires du designer par glisser-déposer sont supportés.

Configure a Relation Widget

Préparation Desktop

For more information refer to the relations chapter of the official QGIS Documentation.

The relation widget shows all the referencing child features in a list. It is possible to add, delete and open them.

The visual identification of the list entries are done via the Display Expression of the child layer.

Key handling

Since the parents primary keys are used as foreign keys on the referencing child features, these primary keys must be save to use even after the synchronization back to the original data. Therefore we recommend to use stable values such as UUIDs for primary keys.

It is possible to already add children from a parent that is about to be added. This possibility will be blocked if there is no valid primary key on the parent or the constraints are violated. In case the adding of the parent feature is canceled after some children have been added already, the children are deleted as well.

Many-To-Many relations

On many-to-many relationships, according to the cardinality setting in the QGIS Vector Layer Properties, on adding, deleting or opening an entry in the list effects directly the child layer (on direct cardinality) or the linking table (on many-to-one cardinality).

The second case is usually used when there are additional relation information (e.g. percentage) in the linking table.

In case of the many-to-one cardinality on many-to-many relations the Display Expression needs to be set on the linking table.

Configure Attachment Widget

Préparation Desktop

The widget type Attachment is used with fields that store the path to files.

Il peut être utilisé pour :

  • show and take photos or add pictures from the gallery
  • écouter et enregistrer des clips audio
  • Visualiser et enregistrer des vidéos
  • montrer des liens vers des fichiers externes comme des PDFs ou d'autres documents

Form attachment picture
Form attachment picture

Form attachment audio
Form attachment audio

Form attachment video
Form attachment video

The path should be set to relative. The pictures, audios, videos, pdf and docs are stored then in a sub-directory of the project, where the link stored in the textfield is pointing to.

Note

QGIS 3.30 or newer is required for the audio and video functionality

In QField the attachments are displayed. By clicking the icons symbol the camera or audio record is started to update the pictures, videos or audios with a new media.

Media
Media

On synchronization the sub-directory with the pictures, videos audios, pdf and docs has to be copied as well.

The option hyperlink on the attachment widget will disable the camera functionality and enable a hyperlink to open a document (pdf, doc, ...).

Configurable attachment path

Préparation Desktop

QFieldSync provides the possibility to configure the path of attachments.

  • Go to QFieldSync plugin > Layers Properties

Use expressions to specify the path of the attachments. By default, pictures are saved into the "DCIM" folder, audio recordings are saved into the "audio" folder and videos are saved into "video" with a timestamp as name.

Paths
Paths

Configure a Value Relation Widget

Préparation Desktop

The widget Value Relation offers values from a related table in a combobox. You can select layer, key column and value column. Several options are available to change the standard behaviors: allow null value, order by value and allow multiple selections. The widget will display a drop-down or multiple-select list of the referenced features.

Configure Conditional Visibility

Préparation Desktop

Groups can be hidden based on an expression. This is useful when certain attributes are only required under certain conditions. As an example imagine mapping trees. Some of them might have a disease and you have a list of possible deseases. To not clutter the form with many fields, make a group and configure a visibility expression for a group "diseases". Add a field "desease" with a checkbox. Only when the checkbox is checked, the list of diseases will be available to you.

Configuration of a group box that will only be shown if the checkbox "measures_taken" is checked.
Configuration of a group box that will only be shown if the checkbox "measures_taken" is checked.

Voyons ce que nous avons dans l'attribut :

Define Constraints

Préparation Desktop

Attribute fields can have constraints attached. Constraints are expressions that needs to evaluate to True (or 1) in order to be able to save the form. Constraints are configured on a per-field basis and a description can be added that will be shown if a constraint is not satisfied.

Configuration of a constraint within a range
Configuration of a constraint within a range

Cas d'utilisation courante

You cannot enter an elevation value higher than the highest mountain in this country.

"elevation" < 5000

Un identifiant est requis dans ce champ.

"identifier" IS NOT NULL

Define Default Values

Préparation Desktop

Fields can have default values configured. Default values are inserted into the attribute form when digitizing a new feature. They are visible and can be modified as long as the field is editable. They can be based on the geometry or expression variables.

Configuration of a formatted date as default value
Configuration of a formatted date as default value

Variables supplémentaires

For more information regarding storing information related to your position in object attributes, refer to the deticated GNSS documentation.

For QFieldCloud users, two variables can be used in expressions including attribute form's default values: - @cloud_username which returns the name of the currently logged in QFieldCloud user. - @cloud_useremail which returns the email address of the currently logged in QFieldCloud user.

Cas d'utilisation courante

Insérer l'information de positionnement comme variable :

@position_horizontal_accuracy

Insérer la date et l'heure actuelle :

now()

Insérer la longueur de la ligne numérisée :

length($geometry)

Configurer les variables générales sur l'appareil et les insérer.

@operator_name

If you want to assign a region code based on the location where a new feature is inserted, you can do so by using an aggregate expression:

aggregate( layer:='regions', aggregate:='max', expression:="code", filter:=intersects( $geometry, geometry( @parent ) ) )

To transform the coordinates received from \@position_coordinate to the coordinate system of your project:

x(transform(@position_coordinate, 'EPSG:4326', @project_crs ))
y(transform(@position_coordinate, 'EPSG:4326', @project_crs ))

::: {#snapping_results} If you want to use the snapping results after drawing a line, you can use the [\@snapping_results]{.title-ref} variable. The following code extracts the value of the attribute [id]{.title-ref} of the snapping match of the first point of a line. :::

with_variable(
  'first_snapped_point',
  array_first( @snapping_results ),
  attribute(
    get_feature_by_id(
      @first_snapped_point['layer'],
      @first_snapped_point['feature_id']
    ),
    'id'
  )
)

Search in value relation and relation reference widget

It is possible to search value in a value relation or relation reference widget using the magnifying glass next to the field.

Note

Define the display expression for the concerned layers, this will be used for searching for features. This is configured under Vector Layer Properties > Display

Configure Auto-complete Value

Préparation Desktop

The "Use completer" checkbox must be checked to be able to use the auto-complete in the value relation.

Enable auto-complete within QGIS
Enable auto-complete within QGIS

Here a video showing how it works on QField

Define QML Widgets

Custom QML widgets can be useful to integrate advanced actions into forms. In this example we define add a button that open a third-party map and navigation app. This is useful to open e.g. turn-by-turn navigations on the device-native app for the user.

import QtQuick 2.0
import QtQuick.Controls 2.0

Button {
    width: 200
    height: width/5
    text: "Open in Maps"
    onClicked: {
        Qt.openUrlExternally(expression.evaluate("'geo:0,0?q=' || $y || ',' || $x"));
    }
}

The geo URI above is adapted to work with Android. For Apple Maps the URI can be changed to 'geo:' || $y || ',' || $x.