在此页面

将组件连接到信号

通过信号和处理机制,组件可以对应用程序事件(由信号表示)做出响应。当信号发出时,相应的信号处理程序会被调用,通过使用脚本或处理程序中的其他操作来响应事件。

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

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

当属性值发生变化时,会自动发出一个信号。这种类型的信号是属性变化信号,这些信号的信号处理程序的写法是on<Property>Changed ,其中<Property>是属性的名称,第一个字母大写。

例如,鼠标区域组件有一个pressed 属性。要在该属性发生变化时接收通知,可以使用名为onPressedChanged 的信号处理器。

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

创建连接

您可以使用上下文菜单将所选组件连接到连接到操作的信号上:

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

添加连接

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

要将组件连接到其可用的信号,请执行以下操作

  1. Navigator2D 视图中选择要连接的组件。
  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 视图工作流程的实际示例:

另请参阅 如何使用用户界面组件Qt Quick 用户界面设计设计Qt Quick 用户界面

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.