Answers:
当前,这是一个未完成的功能请求(请参阅功能#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请求此类标记功能的理想时机。我将针对这两个请求添加功能请求。