方法

GtkConstraintLayoutadd_constraints_from_descriptionv

声明 [src]

GList*
gtk_constraint_layout_add_constraints_from_descriptionv (
  GtkConstraintLayout* layout,
  const char* const* lines,
  gsize n_lines,
  int hspacing,
  int vspacing,
  GHashTable* views,
  GError** error
)

描述 [src]

VFL 描述中创建约束列表。

视觉格式语言(Visual Format Language,VFL)基于 Apple 的 AutoLayout VFL

使用 views 字典将 GtkConstraintTarget 实例匹配到 VFL 内部的符号视图名称。

VFL 语法

       <visualFormatString> = (<orientation>)?
                              (<superview><connection>)?
                              <view>(<connection><view>)*
                              (<connection><superview>)?
              <orientation> = 'H' | 'V'
                <superview> = '|'
               <connection> = '' | '-' <predicateList> '-' | '-'
            <predicateList> = <simplePredicate> | <predicateListWithParens>
          <simplePredicate> = <metricName> | <positiveNumber>
  <predicateListWithParens> = '(' <predicate> (',' <predicate>)* ')'
                <predicate> = (<relation>)? <objectOfPredicate> (<operatorList>)? ('@' <priority>)?
                 <relation> = '==' | '<=' | '>='
        <objectOfPredicate> = <constant> | <viewName> | ('.' <attributeName>)?
                 <priority> = <positiveNumber> | 'required' | 'strong' | 'medium' | 'weak'
                 <constant> = <number>
             <operatorList> = (<multiplyOperator>)? (<addOperator>)?
         <multiplyOperator> = [ '*' | '/' ] <positiveNumber>
              <addOperator> = [ '+' | '-' ] <positiveNumber>
                 <viewName> = [A-Za-z_]([A-Za-z0-9_]*) // A C identifier
               <metricName> = [A-Za-z_]([A-Za-z0-9_]*) // A C identifier
            <attributeName> = 'top' | 'bottom' | 'left' | 'right' | 'width' | 'height' |
                              'start' | 'end' | 'centerX' | 'centerY' | 'baseline'
           <positiveNumber> // A positive real number parseable by g_ascii_strtod()
                   <number> // A real number parseable by g_ascii_strtod()

注意:GTK使用的VFL语法与Apple定义的略有不同,因为它可以使用约束强度的符号值而不是数值;此外,GTK允许在谓词中添加简单的算术运算。

VFL 描述示例

  // Default spacing
  [button]-[textField]

  // Width constraint
  [button(>=50)]

  // Connection to super view
  |-50-[purpleBox]-50-|

  // Vertical layout
  V:[topField]-10-[bottomField]

  // Flush views
  [maroonView][blueView]

  // Priority
  [button(100@strong)]

  // Equal widths
  [button1(==button2)]

  // Multiple predicates
  [flexibleButton(>=70,<=100)]

  // A complete line of layout
  |-[find]-[findNext]-[findField(>=20)]-|

  // Operators
  [button1(button2 / 3 + 50)]

  // Named attributes
  [button1(==button2.height)]

该方法在语言绑定中被重命名为 gtk_constraint_layout_add_constraints_from_description()

参数

lines

类型: char* 数组

定义一组约束的视觉格式语言(Visual Format Language,VFL)行数组。

数组的长度由《n_lines》参数指定。
方法调用者拥有数据。
每个元素都是终止于 NUL 的 UTF-8 字符串。
n_lines

类型: gsize

行的数量。

hspacing

类型: int

默认水平间距值,或-1使用回退值。

vspacing

类型: int

默认垂直间距值,或-1使用回退值。

views

类型: GHashTable

一个 [ name, target ] 对的字典;name 键映射到《VFL》行中的视图名称,而 target 值映射到使用《GtkConstraintLayout》的子项或指示符。

方法调用者拥有数据。
error

类型: GError **

可恢复错误的返回位置。

该参数可以为 NULL
如果返回位置不是 NULL,则您必须将其初始化为一个 NULL GError*
如果没有错误,则该方法会将参数初始化为 NULL
发生错误时,参数将设置为一个新分配的 GError;调用者将拥有这些数据,并负责释放它。

返回值

类型: 一个包含 GtkConstraint* 的列表

被添加到布局的 GtkConstraint 实例的列表。

方法调用者将拥有返回的数据容器,但不拥有其中的数据。