跳转至

属性表单

QField创建类似但不同于QGIS的表单。QGIS中的字段控件在尽最大努力的基础上得到支持,并针对移动应用的特点进行了优化。

控件类型 支持 备注
文本编辑 - 不支持HTML
- 根据类型强制数字输入。
复选框
值映射
隐藏
附件 此字段与相机结合使用。它还可以打开其他文件,如 pdf 和 doc (如果您有合适的查看器) 附件 (相片设置)
日期时间
范围
关系参照
关系控件
值关系
UUID生成器
QML / HTML 控件
其他 资助

可编辑

遵守字段的 可编辑 特性。

记住之前的值

QField对最后使用的值提供了细粒度控制,并忽略了QGIS设置。

禁止弹出属性表单

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

拖放设计器器窗体

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

配置关系控件

桌面端筹备工作

有关更多信息,请参阅官方 QGIS 文档 的相关章节。

关系控件在列表中显示所有引用的子要素,可以添加、删除和打开。

通过子图层的 显示表达式 对列表条目进行可视化识别。

键处理

由于父主键用作引用子要素上的外键,因此即使在同步回原始数据后,也必须保存这些主键以供使用。因此,我们建议对主键使用UUID等稳定值。

已经可以从即将添加的父级添加子级。如果父级没有有效的主键或违反了约束条件,则这种可能性将被阻止。如果在已经添加了一些子级之后取消添加父要素,也会删除子级。

多对多关系

在多对多关系中,根据 QGIS矢量图层属性 中的基数设置,在添加、删除或打开列表中的条目时,会直接影响子图层 (直接基数) 或链接表 (多对一基数)。

当链接表中存在附加关系信息 (例如百分比) 时,通常使用第二种情况。

在多对多关系上存在多对一基数的情况下,需要在链接表设置 显示表达式

配置附件控件

桌面端筹备工作

控件类型 附件 与存储路径文件的字段一起使用。

可用于:

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

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

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

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

路径应设置为相对路径。图片、音频、视频、PDF和文档存储在工程的子目录中,存储在文本字段中的链接指向相应附件。

笔记

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

在QField中显示附件。通过单击图标符号,相机或音频记录将开始使用新媒介更新图片、视频或音频。

媒介
媒介

同步时,还必须复制含有图片、视频、音频、PDF和文档的子目录。

附件控件上的选项 超链接 将禁用相机功能,并启用超链接以打开文档 (pdf, doc, ...)。

配置附件路径

桌面端筹备工作

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

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

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

路径
路径

配置值关系控件

桌面端筹备工作

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

配置条件可见性

桌面端筹备工作

可以根据表达式隐藏组。当某些属性仅在特定条件下需要时,这很有用。例如,想象一下映射树。他们中的一些人可能患有某种疾病,您有一个的疾病列表。为了避免表单中出现多个字段,需要创建一个组,并为组 "疾病" 配置可见性表达式。添加带有复选框的字段 "疾病"。只有勾选该复选框时,您才能使用疾病列表。

只有勾选复选框 "measures_taken" 时才会显示组合框的配置。
只有勾选复选框 "measures_taken" 时才会显示组合框的配置。

让我们看看在字段上有什么:

定义约束

桌面端筹备工作

属性字段可以附加约束条件。约束是需要计算结果为 True (或 1) 才能保存表单的表达式。约束是基于每个字段进行配置的,如果不满足约束,则可以添加说明。

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

常见用例

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

"高程" < 5000

需要填写标识符。

"标识" IS NOT NULL

定义默认值

桌面端筹备工作

字段可以配置默认值。数字化新要素时,默认值将插入到属性表单中。它们是可见的,只要字段是可编辑的,就可以修改。它们可以基于几何图形或表达式变量。

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

其他变量

有关在对象属性中存储与位置相关数据的更多信息,请参阅 GNSS文档

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

常见用例

插入位置信息作为变量:

@position_horizontal_accuracy

插入当前日期和时间:

now()

插入数字化线的长度:

length($geometry)

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

@operator_name

如果要根据插入新要素的位置指定区域代码,可以使用聚合表达式来指定:

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

要将从 \@position_coordinate 接收的坐标转换为您的工程坐标系,请执行以下操作:

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

::: {#snapping_results} 如果要在绘制线后使用捕捉结果,可以使用 [\@snapping_results]{.title-ref} 变量。下面的代码提取线的第一个点的捕捉匹配的属性 [id]{.title-ref} 的值。 :::

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

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

可以使用字段旁边的放大镜在 值关系关系参照 控件中搜索值。

笔记

为相关图层定义 显示表达式 ,该表达式将用于搜索要素。这是在 矢量图层属性 > 显示 中配置的。

配置自动补全值

桌面端筹备工作

必须勾选 "使用自动补全" 复选框才能在值关系中使用自动补全功能。

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

这段视频展示了如何在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