Qt 信号和槽:引用参数是否被复制?

2023-12-22

在qt框架中,大多数库信号和槽都使用指针作为参数。我想知道,如果我创建一个信号槽“结构”,将引用作为参数而不是指针,是否会复制整个参数,或者像常规 c++ 引用一样仅复制 4 个字节(32 位系统)?

我问这个问题是因为当我使用参考参数创建信号/槽方法时我注意到了一些事情。当我那时connect他们,QTCreator 中的自动完成机制不会像他对指针参数那样提示我引用参数。他用常规参数提示我。例如:

我创建一个信号和槽:

...
signals:
     void mySignal(int& parameter);
private slots:
     void on_mySignal(int& parameter);

然后我尝试连接它们,但 Qt 没有添加&参数参考:

...
connect(this, SIGNAL(mySignal(int)), this, SLOT(on_mySignal(int)));

我必须手动更改为:

connect(this, SIGNAL(mySignal(int&)), this, SLOT(on_mySignal(int&)));

因此我想知道,参考是否适用于信号/槽?我将不胜感激所有的帮助。


如果您在同一线程上发送和接收引用,则默认情况下不会创建任何副本。如果您执行其他操作,包括发送/接收值或发送对另一个线程的引用,则会创建一份、两份甚至三份副本。

发生的情况取决于连接类型以及 QT 需要知道引用在调用过程中保持有效的保证。同一线程上的直接连接解析为简单的函数调用,因此底层数据几乎不会发生任何变化。然而,排队连接无法保证调用何时实际发生,因此 QT 将制作副本以保持数据完整性。 QT 隐式地对跨线程边界的信号进行排队。

如果任一方都是按值传递,则 QT 会复制数据以不影响底层对象的状态。

了解更多信息,看看这篇博文 http://www.embeddeduse.com/2013/06/29/copied-or-not-copied-arguments-signals-slots/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 信号和槽:引用参数是否被复制? 的相关文章

  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • java.net.MalformedURLException:无协议

    我收到如下 Java 异常 java net MalformedURLException no protocol 我的程序尝试使用以下方法解析 XML 字符串 Document dom DocumentBuilderFactory dbf
  • 比较 C# 中的枚举标志

    我需要检测枚举值中是否设置了标志 该类型用 Flag 属性标记 通常它是这样制作的 value flag flag 但由于我需要通过通用来做到这一点 有时在运行时我的事件只有一个 Enum 引用 我找不到使用 运算符的简单方法 目前我是这样
  • Java说非空文件是空的?

    我有一个特定文件 http dl dropbox com u 123623 test fJava说的是空的 源代码 import java io File import java io FileNotFoundException impor
  • 从 Twitter 状态获取意图的工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑一个项目 其中出版物的内容通过来自该地区的人们的相关 公开的推文来增强 但我怎样才能以编程方
  • 将所有设置从 Eclipse 导入到 Android Studio

    Google 宣布不再积极开发 Eclipse 的 ADT 插件 如果您是新的 Android 开发人员 您应该考虑从 Android Studio 开始 因为 Eclipse 的 ADT 插件不再处于积极开发状态 http develop
  • onblur 和 link 元素在 Chrome 中无法正常工作 - 在 IE 10 中正常

    我正在努力实现以下目标 单击链接 显示菜单 一旦该菜单失去焦点 清除菜单 同样当单击菜单项时 删除菜单 这是我的简化代码 a href ClickOnMe a function doThis console log clickedOnIte
  • 凸包的测试用例数据

    我需要为类作业创建一个 2D 凸包函数 并且我想要一个比作业提供的更强大的测试用例 有谁知道解决方案的大型测试用例 25 这里还有一些测试数据 这是一些测试数据 Test 1 8 7 7 7 7 7 7 7 7 9 0 9 0 0 9 0
  • Pandas - 滚动坡度计算

    如何计算每列滚动 窗口 60 值的斜率 步长为5 我想计算每5分钟的值 并且我不需要每条记录的结果 这是示例数据框和结果 df Time A N 2016 01 01 00 00 1 2 4 2 2016 01 01 00 01 1 2 4
  • 如何设置ADB进行远程机器开发和本地设备部署

    我的场景是这样的 我在家远程办公并通过以下方式登录我的工作机器Windows 远程桌面 https Windows 20Remote 20Desktop 我用Eclipse https en wikipedia org wiki Eclip
  • css - 如何将
  • 放置在水平
  • I have section 其中包含水平ul 其中包含四个li的 如下 header strip ul display flex justify content space between margin 0 padding 0 heigh
  • R - 根据同一列中先前的值进行变异

    Data df lt data frame year c 2018 2019 2020 2021 growth c 0 05 0 1 0 08 0 06 size c 100 NA NA NA year growth size 1 2018
  • 不使用 Javascript 切换 div

    我想切换一个 div 但我的要求是它必须与javascript关掉 我想选择一个声明 修改搜索 的超链接 并显示包含搜索条件的 div 我发现了大量使用的演示jQuery 但它们都需要javascript已启用 如有任何帮助 我们将不胜感激
  • 何时在 PHP 中使用接口

    在 PHP 中使用对象进行编码时 我一直很难理解接口的真正价值 我想象可能是其他语言 据我了解 你使用Interface强制或保证当一个类使用Interface该类将具有定义在Interface在那个班级里面 因此 根据我对使用它们的了解
  • 使用 Api Gateway 和 Lambda 导出 CSV

    我想做的事 我想做的是有一个 url 它将返回给调用者一个 CSV 文件 该文件本质上是数据的导出 我希望这仍然是一个无服务器解决方案 我做了什么 我已经使用我想要的 URL 创建了一个 AWS API Gateway 我创建了一个 lam
  • Nuxt 和 vue 中的 Data() VS asyncData()

    Both data and async data 给出相同的结果 很明显 结果来自asyncData 覆盖结果data 两者都会在源代码中生成 HTML 代码 即在服务器端呈现的代码 此外 两者都可以用于 await 要获取的数据 例如 使
  • 使用 Python 创建动态更新图

    我需要用Python编写一个脚本 该脚本将获取动态更改的数据 数据源在这里并不重要 并在屏幕上显示图形 我知道如何使用 matplotlib 但 matplotlib 的问题是我只能在脚本末尾显示一次图形 我不仅需要能够一次显示图表 而且还
  • 自定义 VariableListener 更新多个影子变量

    我正在阅读有关影子变量和自定义变量侦听器的文档 我想知道我在理解它们如何工作方面是否走在正确的轨道上 复制自 OptaPlanner 文档第 4 3 6 4 节 自定义变量监听器 如果一个 VariableListener 改变了两个影子变
  • 为模拟输入设备编写 Windows 驱动程序

    我的应用程序需要充当虚拟操纵杆 想象一下用鼠标拖动一个正方形并将其转换为模拟操纵杆的输出 并通过网络将一些击键发送到另一台计算机 驱动程序将在其中接收该输入 我只需要支持XP Vista和Win7 也许不用写驱动程序就可以完成 我尝试使用
  • 自定义 Spring boot 启动器中是否可以有默认的 application.yml ?

    我面临着我的自定义 Spring Boot 启动器和用作依赖项的 Spring Boot 应用程序使用者的问题 我在两个 application yml 中都有 但似乎我正在寻找的配置只有在消费者中定义时才存在 我在启动器中的配置是这样的
  • Qt 信号和槽:引用参数是否被复制?

    在qt框架中 大多数库信号和槽都使用指针作为参数 我想知道 如果我创建一个信号槽 结构 将引用作为参数而不是指针 是否会复制整个参数 或者像常规 c 引用一样仅复制 4 个字节 32 位系统 我问这个问题是因为当我使用参考参数创建信号 槽方