本页内容

将组件连接到信号

信号和处理程序机制使组件能够响应应用程序事件,这些事件由信号表示。当信号被触发时,会调用相应的信号处理程序,通过处理程序中放置的脚本或其他操作来响应该事件。

若要在特定组件发出特定信号时接收通知,该组件的定义应声明一个名为on<Signal> 的信号处理程序,其中<Signal>是信号的名称,首字母大写。该信号处理程序应包含在被调用时需执行的 JavaScript 代码。

组件具有预定义的信号,当用户与应用程序交互时,这些信号会被发出。例如,“鼠标区域”(Mouse Area)组件有一个名为clicked 的信号,每当在该区域内单击鼠标时,该信号就会被发出。由于信号名称为clicked ,因此用于接收此信号的信号处理程序命名为onClicked

当属性的值发生变化时,系统会自动发出信号。此类信号称为属性变化信号,其信号处理程序的写法为on<Property>Changed ,其中<Property>是属性的名称,首字母大写。

例如,Mouse Area 组件具有一个名为pressed 的属性。若要在该属性发生变化时接收通知,应使用名为onPressedChanged 的信号处理程序。

有关信号和信号处理程序的更多信息,请参阅《信号和处理程序事件系统》

创建连接

您可以使用上下文菜单将选中的组件连接到一个信号,然后将该信号连接到一个动作:

  1. 在“Navigator ”或“2D ”视图中选择要连接的组件。
  2. 在上下文菜单中,选择“Connections ” > “Add New Connection ”,然后选择一个可用的信号、操作和操作属性。

添加连接

您还可以在“Connections ”视图的“Connections ”选项卡中添加连接。

要将组件连接到其可用的信号:

  1. 在“Navigator ”或“2D ”视图中选择要连接的组件。
  2. 转到“Connections ”视图中的“Connections ”选项卡。

    “连接”视图中的“连接”选项卡。

  3. 选择““+”按钮 ”(Add ),在连接编辑器中创建连接。

将信号连接到动作

要将信号连接到动作:

  1. 选择或创建连接以打开连接编辑器。

    连接编辑器。

    连接编辑器。

  2. Target 中,选择一个组件。
  3. Signal 中,选择要发出的信号。
  4. Action 中,选择信号发出时要执行的操作。

连接的属性取决于所选的操作:

  • Call Function 设置要调用的函数。
  • Assign 设置源和目标属性。
  • Change State 在状态组内设置目标状态。
  • Set Property 设置组件属性。
  • Print Message 设置要显示的文本。

添加条件

使用连接编辑器为带条件的操作创建 JavaScript 表达式。操作将组件与信号连接起来,而条件则从其他组件中获取属性值并进行相互比较。随后,您可以使用 JavaScript 表达式来更改组件。

选择“Add Condition ”以向所选操作添加逻辑。

在连接编辑器中添加连接。

要包含else 语句,请选择Add Else Statement

要使用复杂的条件语句:

  1. 选择“{} ”以打开“Action Editor ”。
  2. 输入 JavaScript 语句。
  3. 关闭对话框以应用更改。

有关可用于构建条件表达式的逻辑运算符的更多信息,请参阅“逻辑运算符概览”

创建 JavaScript 表达式

要在连接编辑器中为操作创建 JavaScript 表达式:

  • 将组件信号连接到操作。

    显示 JavaScript 表达式的连接编辑器。

  • 选择“{} ”以打开“Action Editor ”视图,并使用组件和逻辑表达式编写 JavaScript 表达式。

    Action Editor 中的一个 JavaScript 代码片段。

注意:在 连接编辑器,您只能创建单层if-else表达式。若要创建嵌套表达式,请选择“{} ”。

跳转到代码

要转到“Code ”视图中的代码,请在连接编辑器中选择““跳转到代码”按钮 ”(Jump to the code )。

删除连接

要删除连接,请在“Connections ”中选中该连接,然后选择““减号”按钮 ”(Remove )。

查看连接的实际应用

观看此视频,了解“Connection ”视图工作流的实际示例:

另请参阅 《操作指南:使用 UI 组件》、《Qt Quick UI 设计》以及《设计Qt Quick UI》。

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.