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;父组件不能写。
- 远程子组件的数据域名在父组件编辑器确认。