c++ - 我需要 Q_EMIT 示例
问题描述
现在我正在学习 QT ,但我在互联网上不懂 Q_EMIT ,我没有找到具体的语法或相关示例。请帮助我!
我发现了这一点:当您想将 Qt 信号和插槽与 3rd 方信号/插槽机制一起使用时,使用此宏替换发出信号的 emit 关键字。
该宏通常在 .pro 文件中使用 CONFIG 变量指定 no_keywords 时使用,但即使未指定 no_keywords 也可以使用该宏。
解决方案
Qt 系统基于“信号”和“槽”的概念。“信号”是发生的事情,通常是用户输入,而“插槽”只是代码。您可以将信号连接到插槽,以便在触发信号时调用插槽。在实现方面,信号和槽都是 C++ 方法,其中信号的代码将调用与其连接的所有槽(和信号)。您可以在Qt 文档中阅读有关信号和插槽的更多信息。
知道这一点,Q_EMIT
和emit
宏是用于人类阅读代码的指标,即您正在调用一个信号(正如我上面解释的,它隐式调用与其连接的所有插槽)。因此,此方法调用可能会对系统的其他地方产生影响。宏本身扩展为空的 C++ 代码。connected()
如果您在对象的某处有信号,则可以将其称为Q_EMIT connected();
或emit connected();
什至connected();
推荐阅读
- angular - 是否可以在一次登录下组合多个 Angular 应用程序?
- typescript - 如何在 Typescript 中使用 jsdoc 类型?
- vue.js - 从路由器链接发出事件
- awk - 如何使用 awk 将文本文件汇总为新文件
- python - Python,正则表达式 - 从字典中的字符串中检索关键字
- apache-spark - 使用 ES-Spark 连接器创建嵌套对象数组
- c++ - C++中指针大小的保证
- oracle - Oracle REST API 字典
- python - 使用 Pandas 将列从一个数据帧添加到另一个具有不同列名的数据帧
- google-bigquery - 将 ML Engine 直接用于存储在 Google BigQuery 表中的数据