有没有办法向打印作曲家添加“当前用户”标签?


11

有没有一种方法可以在QGIS中向打印作曲家添加当前用户标签。

我以为可能与$ CURRENT_DATE格式相似。

这将在Windows环境中。


1
事实证明“ $ CURRENT_DATE(yyyy-MM-dd)”非常有用,我将其包含在许多作曲家模板中。这些命令还有更多可用吗?想要自动显示我的项目名称或某个图层名称等?
SAnderka

Answers:


8

当前,这是一个未完成的功能请求(请参阅功能#1385)。

您可以为新的“令牌”(或“字段”,因为它们在请求中被昵称)添加想法。请记住,请按照数据类型的Qt类包括推荐的格式设置选项,就像使用的语法一样$CURRENT_DATE(yyyy-MM-dd),该格式使用QDate::currentDate().toString( formatText )QDate类字符串格式进行解析。


但是,比尝试实现用户可能需要或请求的所有类型的令牌(可能是不断扩展的列表),还有更好的解决方案。

当前,至少有两种方法可以实现更强大的解决方案:

A)标签文本可以选择使用QGIS Expression Editor生成

当前是高级标签引擎中使用的方法。

在此处输入图片说明

由于Composer标签与地图图层的数据源无关,Fields and Values因此需要替换该部分并用更合适的Print Composer标记填充,例如项目名称,标题,投影,用户等。(日期功能已在母版中分支机构构建)。幸运的是,开发人员一直在努力使添加新的表达式部分相对“容易”,尽管这仍然需要一些工作。还需要其他工作来容纳新令牌。

B)标签文本(或标记)可选地是Python代码段的结果

尽管不如Expression Editor解决方案那么用户友好,但由于它需要了解Python,因此实现此功能可能仅需一次开发即可。然后,可以访问,格式化和输出文本到QGIS项目的任何文本方面,包括可通过PyQGIS API(即Python控制台)获得的各种Composer项目

Python片段可以包装在单独的标记中,并嵌入到文本编辑框的当前文本中,也可以包含在GUI的单独的文本编辑框中,并通过复选框激活。出于安全原因,该代码可能不会在Composer启动时自动运行(不过,可以选择始终启用)。

单独的文本编辑框方法将允许Python代码验证和特定命名的Python函数的键输入,例如以下代码段:

import getpass
from qgis.core import *

def pytoken_user():
    return getpass.getuser()

def pytoken_title():
    return QgsProject.instance().title()

将替换任意数量的名为$pytoken_user或的文本标记$pytoken_title


与在QGIS源代码中在线实现单个令牌相比,上述两种解决方案都具有更大的可扩展性。可能还有其他更好的解决方案。

Hugentobler博士最近在QGIS的主分支中重新设计了Print Composer,因此现在是为下一版QGIS请求此类标记功能的理想时机。我将针对这两个请求添加功能请求。



这些解决方案中的任何一个是否都使其成为QGIS的发行版?还是还在开发中?谢谢
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.