跳转到主要内容

Widget.Using

把另一个 QWidget 作为节点嵌入当前组件。

签名

属性

Name 与 Url 二选一;也可以把值写在标签内容里。

内容

Widget.Using 本身不渲染额外容器,子组件内容按原位渲染。父组件决定外层尺寸。

作为纯数据源

组件可以没有任何布局或可视节点,只放 Data、Resources、Function、Widget.Inputs、Widget.Outputs 和 Triggers。这种组件被 Widget.Using 引入时不会显示任何内容,但会正常拉取数据、执行触发器和函数。

输入契约

父组件通过 Widget.Using.Arguments 传值:
  • 未声明的输入键、类型不匹配、缺少必填输入都会显示错误占位。
  • Arguments 变化会更新子组件 Inputs;子组件内部输入控件仍可修改自己的值。
  • 没有声明 Widget.Inputs 的旧组件保持原行为:Arguments 原样进入 Inputs。

输出契约

声明 Widget.Outputs 后,父组件只能通过 Outputs 读取声明过的输出;Children.<As>.Data / Results 不再暴露,形成输出白名单。没有声明 Widget.Outputs 的组件仍暴露旧的完整快照。

完整示例

Data.Url / Data.Path 支持 {Inputs.*} 插值;Inputs 变化会重新拉取,旧请求会被取消。URL 的协议/主机仍必须是确认过的 https:443,建议只对查询参数或路径段做参数化。 纯数据源也受嵌套深度、实例数和数据源数量限制。

作用域

父组件只读:
Children.<As>.State.Loading / .Error 也可用。未声明 Widget.Outputs 时还可读 .Data / .Results;声明后只暴露 .Outputs。

解析

  • 本地 Name:从自定义组件列表精确匹配;缺失/重名显示错误占位。
  • 远程 Url:后端代理拉取,6 小时 TTL 静默更新。
  • 导出不内联依赖;本地缺失时导出前提示。

限制

  • 深度 ≤5;检测自引用和 A→B→A 循环。
  • 单父组件 ≤20 个实例。
  • 别名重复解析失败。
  • 子组件卸载时清理计时器、脚本沙箱、Blob URL。

示例

坑

  • Name 是显示名,不是文件名。
  • 子组件有独立 Inputs/Data/Results;父组件不能写。
  • 远程子组件的数据域名在父组件编辑器确认。