使用QSignalMapper时如何保留源信号的参数?

2023-11-21

我遇到了一个问题,我需要保留映射的源信号的参数。到目前为止,我只找到了没有任何参数的映射信号的示例。 例如,clicked() 信号:

signalMapper = new QSignalMapper(this);
signalMapper->setMapping(taxFileButton, QString("taxfile.txt"));

connect(taxFileButton, SIGNAL(clicked()),
     signalMapper, SLOT (map()));

connect(signalMapper, SIGNAL(mapped(QString)),
     this, SLOT(readFile(QString)));

但是,我需要用它自己的参数映射一些信号,例如 clicked(bool) 信号,那么 SL​​OT 需要有两个参数 doStuff(bool,QString):

connect(taxFileButton, SIGNAL(clicked(bool)),
     signalMapper, SLOT (map()));

connect(signalMapper, SIGNAL(mapped(QString)),
     this, SLOT(doStuff(bool,QString)));

然而,这样不行吗?有什么解决办法吗?

Thanks!


QSignalMapper不提供传递信号参数的功能。

请参阅文档:
这个类收集了一组无参数信号,并使用与发送信号的对象相对应的整数、字符串或小部件参数重新发出它们。

解决这个问题的方法有:

如果使用Qt4那么我建议实现您自己的信号映射器,它支持您需要的参数。
QSignalMapper执行将是一个很好的开始例子。

But 如果使用Qt5然后你就可以做你需要做的事情而无需使用QSignalMapper根本不。只需将信号连接到 lambda:

connect(taxFileButton, &TaxFileButton::clicked, [this](bool arg) {
    doStuff(arg, "taxfile.txt");
}  );

我假设taxFileButton是的实例TaxFileButton class.

如果 C++11 lambda 由于某种原因不适合那么tr1::bind可以用来绑定this and "taxfile.txt" values.
请注意,当以下情况发生时,此类连接不会自动断开:this对象被破坏。 更多细节是here.

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

使用QSignalMapper时如何保留源信号的参数? 的相关文章

随机推荐

  • Javascript正则表达式字符串中的货币符号

    所以我有一个格式化字符串可以是 00 or 00我想获取货币符号 这里是我正在使用的代码 currencySymbol format match p Sc 我希望currencySymbol 等于 或 但它不起作用 currencySymb
  • MS SQL Server - 通过网络批量插入

    我有一个使用 MS SQL Server 的应用程序 我需要从文件中进行批量插入 症结在于数据库和我的应用程序将托管在不同的服务器上 通过网络进行批量插入的最佳方法是什么 到目前为止我想到的两个想法 从应用程序服务器共享数据库服务器可以找到
  • 无法使用bundle exec找到rake

    当我尝试执行 捆绑执行耙任何东西 我收到错误 Could not find rake 10 1 0 in any of the sources Run bundle install to install missing gems 但是当我执
  • 线程化 Delphi ADO 查询

    我有一个查询代码 每次需要从数据库获取数据时都可以调用它 并且我希望它是线程化的 不知道如何在线程中实现此代码 以便我可以重用此代码 基本上 我希望此代码在线程中 我知道如何在线程内创建一个简单的数据库查询 但想要一些可以重用的东西 谁能指
  • JavaScript获取url段和参数

    我读过一些问题 但我仍然不知道该怎么做我有一个网址example com event 14aD9Uxp p 10 在这里我想得到14aD9Uxp和 p 的值我尝试过使用split p 但这不起作用我想使用正则表达式 但我不太明白如何使用它
  • 在桌面上运行时如何将 Windows 10 通用应用程序的窗口最大化至全屏?

    使用 Windows 10 或 Windows 8 1 WinRT 构建通用应用程序时 是否可以强制应用程序的主窗口在启动时最大化 这显然是应用程序在移动设备上运行时的自然行为 但在桌面上运行时则不然 使用 WinForms 这当然是可能的
  • 在 Spring Boot 中使用 Angular 启用 Cors,仍然存在 Cors 错误

    我为所有来源和标头启用了 cors 但当我调用 a 时 我仍然收到 cors 错误get从我的角度应用程序到 Spring Boot 的方法 来自控制台的 Cors 错误 Access to XMLHttpRequest at http l
  • 返回任务是否违反了 CQS 原则?

    CQS 原则 https en wikipedia org wiki Command E2 80 93query separation 指出命令应返回 void 对于异步方法的建议是永远不要返回 void https msdn micros
  • 将任何 XML 文档绑定到 WPF TreeView

    我想使用 TypeConverter 将任何 XML 文档绑定到 WPF TreeView 我最初的解决方案是使用递归 但是当文档很大时 UI 就会严重依赖 以下链接讨论了 TypeConverter 但针对特定的节点 元素组合 http
  • 使用 FileReference 下载时丢失扩展名

    我需要用户从我的应用程序下载 JPEG 文件 但是 当用户更改文件名时 将下载保存的文件 不带扩展名 例如 我正在使用 FileReference download 并将默认文件名设置为 demoPic jpg 并且用户的 Windows
  • “@android:drawable/ic_”与“@*android:drawable/ic_”

    有人知道在哪里可以找到有关星号的文档吗 它似乎覆盖了子类 android R drawable 中 私有 变量的保护 android 用于访问私有资源 这些资源可能会在两个 Android 版本之间更改或删除 因此您永远不应该使用它们 这仅
  • 将所有 Neo4J 数据库加载到 RAM

    我正在尝试将所有 Neo4j DB 加载到 RAM 以便查询速度更快 当将属性映射传递到图形创建时 我没有看到该过程像以前那样占用更多的内存空间 而且它也与磁盘上的文件空间不成比例 可能是什么问题呢 以及如何修复它 谢谢 Neo4j 延迟加
  • 删除 Dask 中的空分区

    从 CSV 加载数据时 某些 CSV 无法加载 从而导致分区为空 我想删除所有空分区 因为某些方法似乎不适用于空分区 我尝试过重新分区 其中 例如 repartition npartitions 10 有效 但大于此值仍可能导致空分区 实现
  • Babel 6 regeneratorRuntime 未定义

    我正在尝试在 Babel 6 上从头开始使用 async await 但我得到了regeneratorRuntime没有定义 babelrc 文件 presets es2015 stage 0 package json 文件 devDepe
  • 如何测试 Spring 集成

    我是 Spring 集成的新手 我有 ActiveMQ 有一个 responseQ 因此 当消息到达 responseQ 时 gt painResponseChannel gt Transformer gt processResponseC
  • 获取执行jpql查询后更新的记录数

    如何在执行 jpql 查询后获取更新的记录数 例如 UPDATE Device d SET d name Name WHERE d locationId id Modifying Query UPDATE Device d SET d na
  • 如何阻止 jQuery mobile 的自动页面样式化?

    jQuery Mobile 在加载时自动向页面上的所有元素添加类 这确实弄乱了我页面上的 jQuery UI 小部件 有没有办法阻止 jQuery mobile 自动向我的 HTML 元素添加类 我只想在我的页面上显示一些 jQuery 移
  • MouseBinding 上的 WPF 键盘修饰符

    我正在 WPF 中使用 MVVM 模式 对两者来说都有点新 我想设立一个InputBinding on a CheckBox对应于一个Control Click事件 但没有看到Modifiers财产在MouseBinding元素 这就是我想
  • RabbitMQ - 使用curl从队列中获取消息

    我正在尝试使用rabbitmq的HTTP API从队列中获取一些消息 我正在关注中的文档here我没有vhost配置 我尝试了以下curl命令 curl i u guest guest H content type application
  • 使用QSignalMapper时如何保留源信号的参数?

    我遇到了一个问题 我需要保留映射的源信号的参数 到目前为止 我只找到了没有任何参数的映射信号的示例 例如 clicked 信号 signalMapper new QSignalMapper this signalMapper gt setM