跳转至

属性表单

QField creates forms that are similar to QGIS, but with some differences. QGIS field widgets are supported on a best-effort basis and optimized for mobile use.

控件类型 支持 备注
文本编辑 - HTML is not supported
- Numeric input is enforced based on the field type.
复选框
值映射
隐藏
附件 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)
日期时间
范围
关系参照
关系控件
值关系
UUID生成器
QML / HTML 控件
其他 Funding

Attribute form configuration

In order to customize the attribute form, it is necessary to use the drag and drop designer in QGIS or to a use pre-written UI file. Like for QGIS you can make use of powerful expressions to populate the different fields. Additionally, to the ones available there are QFieldCloud specific variables, which can be utilized inside the attribute form.

可编辑

遵守字段的 可编辑 特性。

记住之前的值

QField offers more fine-grained control over the last used values than QGIS, and uses its own settings instead of the QGIS ones.

禁止弹出属性表单

设置 禁止弹出属性表单 直接应用于QField表单。

拖放设计器器窗体

支持拖放设计器窗体中的组和选项卡。

In the "Attributes Form," you can structure your forms using various containers, such as tabs and groups, and enhance interactivity by incorporating expression-based conditional visibility. By enabling the Drag and Drop Designer, you gain the flexibility to re-order attribute fields, as well as gaining access to widgets that are not directly tied to specific fields (e.g., HTML/QML widgets).

配置关系控件

桌面端筹备工作

For detailed information on setting up layer relations in QGIS, please refer to the setting relations between multiple layers QGIS documentation. To further control the visibility and number of related items shown in QField, see the instructions for configuring Maximum items visibility for QField.

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

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

键处理

Since the parent primary key is used as foreign key in the referencing child features, the primary key must be safe to use (it must be unique) also after syncronizing back to the desktop. Therefore it is recommended to use UUIDs for primary keys. See [Working with Geopackages](../get-started/tutorials/advanced-setup-qfc/#working-with-geopackages for further information.

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.

多对多关系

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.

Configuring Ordered Relations for QGIS and QField

The Ordered Relation Editor widget allows the reordering of linked child features based on a specific field.

1. Install the Plugin

Make sure you have installed the Ordered Relation Editor plugin from the official repository or through the "Plugin Manager" in QGIS.

2. Configure the Layout

Navigate to the Attributes Form section of your layer settings and set the layout editor to Drag and Drop Designer.

3. Set Up the Relation Editor Widget

In the Relation widget type dropdown, select Ordered Relation Editor. Then, configure the widget using the following settings:

  • Ordering Field: Specify the field in the child layer that will be used to determine the order of the features.

  • Description: Define an expression to be displayed for each child feature in the list.

  • Image Path (Optional): Provide a path to an image or icon to visually enhance the list. This is an expression that resolves dynamically.

Widget configuration in QGIS
Widget configuration in QGIS

QField
QField

Configuring an item threshold for Value Map Editor Widgets

To enhance the user experience within QField, it is possible to control the item threshold at which point the value map editor widgets switch to a toggle buttons interface. This feature allows users to quickly access items in QField when there are few and providing a more intuitive interface when dealing with a large number of items.

To activate the Toggle Button Interface:

  1. Open Layer Properties by right-clicking on the desired layer and selecting 'Properties' from the menu.

  2. Navigate to the QField tab located within the Layer Properties dialog.

  3. Here, you will find an option to specify the quantity of items that will trigger the transition to a toggle button interface. Enter the preferred threshold value according to your needs.

QFieldSync Layer Properties
QFieldSync Layer Properties

QField Value Map Editor as List
QField Value Map Editor as List

QField Value Map Editor as Buttons
QField Value Map Editor as Buttons

Configuring the Attachment Widget

桌面端筹备工作

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

可用于:

  • 显示和拍摄照片或从图库添加图片
  • 收听并录制声音片段
  • 显示和录制视频
  • 显示指向外部文件 (如PDF或文档) 的链接

表单附件图片
表单附件图片

表单附件音频
表单附件音频

表单附件视频
表单附件视频

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

笔记

音频和视频功能需要 QGIS 3.30 或更高版本

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.

媒介
媒介

On synchronization the sub-directory with the pictures, videos audios, pdf's and documents 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, ...).

配置附件路径

桌面端筹备工作

QFieldSync提供了配置附件路径的功能。

  • 请转到 QFieldSync插件 > 图层属性

使用表达式指定附件的路径。默认图片保存到 "DCIM" 文件夹,音频记录保存到 "audio" 文件夹,视频保存到以时间戳为名称的 "video" 文件夹。

路径
路径

配置值关系控件

桌面端筹备工作

控件 值关系 在组合框中提供关联表的值。可以选择 图层键列值列。有几个选项可用于更改标准行为: 允许空值按值排序允许多选 。控件将显示被引用要素的下拉列表或多选列表。

Group Values in the Value Relation Widget

You can organize and optimize the appearance of your Value Relation widgets by grouping related items together. This feature allows you to categorize the values in a dropdown list or in a table view based on the content of a chosen column.

For example, if you have a list of cities, you can group them by their respective states. This makes it easier for users to navigate and find the values they need, especially in lists with a large number of items.

配置

Grouping is configured within the Value Relation widget's settings using the following options:

  • Group column: Choose the column from the layer that will be used to organize the items. The values from this column will act as group title.
  • Display group name: Check this box to display the group title as distinct header within the widget. This creates a clear separation between the different groups, making the list easier to navigate.

First configuration
First configuration

Second configuration
Second configuration

Third configuration
Third configuration

Different configurations on QField
Different configurations on QField

配置条件可见性

桌面端筹备工作

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 "disease" with the data type boolean. 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 "desease" is checked.
Configuration of a group box that will only be shown if the checkbox "desease" is checked.

In QField it will look like in the video below.

定义约束

桌面端筹备工作

Attribute fields can have constraints attached. Constraints are rules in the form of expressions. Before a feature can be saved all constraints need to be met. A description can be added that is shown if a constraint is not satisfied.

范围内约束的配置
范围内约束的配置

常见用例

不能输入高于该地区最高山峰的高程值。

"高程" < 5000

需要填写标识符。

"标识" IS NOT NULL

定义默认值

桌面端筹备工作

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.

将格式化日期配置为默认值
将格式化日期配置为默认值

Working with expressions

When creating expressions for projects intended to be used with QField, it is recommended to use layer names rather than layer IDs. This recommendation stems from the fact that during the project conversion process via QFieldSync, the resulting layers may receive different IDs, which can lead to incorrect expression evaluations. By using layer names, you ensure that expressions are evaluated consistently and accurately across different project states.

Using layer names in expressions
Using layer names in expressions

其他变量

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

对于QFieldCloud用户,可以在表达式中使用两个变量,包括属性表单的默认值: - @cloud_username 返回当前登录的QFieldCloud用户的名称。 - @cloud_useremail 返回当前登录QFieldCloud用户的电子邮箱地址。

常见用例

插入位置信息作为变量:

@position_horizontal_accuracy

插入当前日期和时间:

now()

插入数字化线的长度:

length($geometry)

在设备上配置全局变量并插入。

@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'
  )
)

在值关系和关系参照控件中搜索

It is possible to search values 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

配置自动补全值

桌面端筹备工作

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

在QGIS中启用自动补全
在QGIS中启用自动补全

Here is a video showing how it works on QField

定义QML控件

自定义QML控件可用于将高级操作集成到表单中。在本例中,我们定义了添加一个按钮来打开第三方地图和导航的应用程序。这对于用户而言打开本机设备的应用程序非常有用,例如 Turn-by-Turn 导航。

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"));
    }
}

上面的 geo URI 适用于安卓系统。对于苹果地图,URI可以修改为 'geo:' || $y || ',' || $x