无法将 QMap 传递到 SLOT

2024-05-04

所以,这有效:

.h

public slots:
void addMenu(QString passedName);

signals:
void clicked(const QString &text);

.cpp

signalMapper = new QSignalMapper(this);
signalMapper->setMapping(button, QString("passed_value"));
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
connect(signalMapper, SIGNAL(mapped(QString)), this, SLOT(addMenu(QString)));

现在,我尝试将 QMap 传递给 addMenu 而不仅仅是 QString,但出现错误:没有调用“QSignalMapper::setMapping”的匹配函数。我需要创建一个 typeDef 或其他东西吗?

.h

public slots:
void addMenu(QMap < QString, QString > map);

signals:
void clicked(const QMap < QString, QString > &map);

.cpp

//map is defined above

signalMapper = new QSignalMapper(this);
signalMapper->setMapping(button, map);
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
connect(signalMapper, SIGNAL(mapped(QObject*)), this, SLOT(addMenu(QMap < QString, QString >)));

编辑:我也尝试添加 typeDef,但仍然遇到相同的错误。

.h

public:
typedef QMap < QString, QString > passedMapType;

public slots:
void addMenu(passedMapType map);

signals:
void clicked(passedMapType map);

.cpp

passedMapType passedMap;
passedMap.insert(QString("key"), QString("value"));

signalMapper = new QSignalMapper(this);
signalMapper->setMapping(button, passedMap);
connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
connect(signalMapper, SIGNAL(mapped(QObject*)), this, SLOT(addMenu(passedMapType));

....

addMenu(passedMapType passedMap) {

}

“现在,我尝试将 QMap 传递给 addMenu 而不仅仅是 QString,但我收到错误:没有调用“QSignalMapper::setMapping”的匹配函数。”

这不是一般的信号/槽或宏扩展问题,而是 QSignalMapper 的限制。您不能将 QMap 传递给 setMapping,只能传递 int、QString、QWidget* 和 QObject*。请参阅QSignalMapper 文档 http://doc.qt.nokia.com/4.7/qsignalmapper.html.

connect(signalMapper, SIGNAL(mapped(QObject*)), this, SLOT(addMenu(passedMapType));

这也行不通,因为签名不兼容:QObject* 与 QMap。

我会做什么:在按钮的所有者中保存一个 QMap ,在那里创建一个插槽 slotClicked(QObject*) ,连接到按钮的 clicked() 信号,然后从地图,使用传递的 QObject*。Edit:添加了一些伪代码来说明它:

QMap<QWidget*, QMap<QString, QString> > map; //member of the class

//when creating the buttons:

for each button b:
    signalMapper->setMapping( b, b );
    map.insert( b, someMapForThisButton );
connect( signalMapper, SIGNAL(mapped(QWidget*)), this, SLOT(addMenuForButton(QWidget*)) );

//the slot:
void addMenuForButton(QWidget* w) {
     const QMap<QString, QString> m = map.value( w );
     create menu...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法将 QMap 传递到 SLOT 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 组件内调用 Mixin 的方法(Vuejs)

    我无法从组件调用 mixin 方法 出现此错误this hello is not a function 我可以打电话hello 来自 Vue 实例 但我无法在组件内调用它 有什么事吗 div div
  • 何时以及如何使用 C++ htonl 函数

    cout lt lt Hello World lt lt endl 对于我在堆栈上的第一篇文章overflow 我们什么时候应该使用htonl功能 我已经浏览了手册页 但是 我不太明白何时以及如何使用它 Host TO N网络翻译 它确保e
  • MS SQL 2008 如何读取日志

    我有一个有很多行的表 有什么办法可以找出来当插入具体行时 我没有创建 更新时间列 Thanks 检查日志以读取此类信息可以在单个日志条目的基础上完成 但该格式仍然没有记录 而且解码起来确实不容易 我只会出于纯粹的兴趣或取证目的而查看它 如果
  • 使用 parse.com 并遇到分配内存问题

    我是编程新手 过去 3 个月我一直在制作应用程序 并学到了一些东西 但我还没有遇到如何解决这个问题 我一直使用 Parse com 作为我的服务器 发送图片 保存用户数据等 有了所有这些数据 如果我多次打开某些活动 特别是带有图片的活动 应
  • Windows Workflow Foundation 4 和 ASP.NET MVC

    我们正在评估 Windows Workflow Foundation 4 在基于 MVC 3 的 Web 应用程序中的使用 我们希望为不同的项目创建灵活的订单工作流程 有人知道有关此类应用程序的一般架构或实践实验室的详细信息吗 一些具体问题
  • SAXException:错误的信封标签

    我正在尝试连接到通过 Web 服务客户端保护的 Web 服务 https Eclipse 生成了一个基于存根的 Web 服务客户端 对我来说看起来不错 当我尝试从 Web 服务调用方法时 问题就出现了 String a String web
  • 循环数据并创建单独的图形

    我正在循环遍历不同分子名称的列表 并尝试为每个分子生成单独的无花果 但对于每个连续的分子 新的数据也包含了之前的所有数据 我在收集数据后打印了数据 并且对于每个循环 它都显示了正确的数量 这是我的完整代码 import matplotlib
  • 获取 firebase 函数实例 id?

    据我了解 firebase 函数在Google 函数执行环境 这意味着函数在单个实例中执行 根据这个文件 https cloud google com functions docs concepts exec 新的函数实例仅在两种情况下启动
  • pymssql(python模块)无法使用临时表

    这不是一个问题 而是一个先发制人的答案 我从这个网站得到了很多帮助并想回馈 当我尝试使用 pymssql 通过 python 运行它时 我正在努力处理大量 SQL 查询 这些查询失败了 但直接通过 MS SQL 运行时却运行良好 例如 就我
  • 使用 Android Volley 发出 HTTPS 请求

    我正在尝试使用以下代码发出 https 请求 RequestQueue queue Volley newRequestQueue getApplicationContext request new Request
  • Laravel Eloquent 在 with() 函数中使用别名

    再会 laravel 中使用 with 函数时是否可以使用别名 举个例子 posts Post where condition gt with user as friend gt get 简短的回答是否定的 但您可以定义与要使用的别名的关系
  • 有聚合物模板的印章活动吗?

    我试图在每次标记其内容时将输入元素聚焦在聚合物模板内 问题是在模板加载之前我无法选择输入元素 目前 我只是使用 setTimeout 在模板加载后 100 毫秒集中输入 但我想知道是否有更优雅的解决方案 此外 自动对焦属性不起作用 因为模板
  • java regex,仅当不在引号或括号中时才以逗号分隔

    我想通过正则表达式进行java split 当字符串不在单引号或括号中时 我想在每个逗号上分割字符串 例子 Hello my friend how are you should give hello my friend how are yo
  • 搜索引擎可以读取 CSS 吗?

    我用标签来表示句子的重要性 然而 它破坏了页面风格的一致性 所以我用CSS把它改回来 结果是 对于访问者来说是相同的 但对于搜索引擎 SE 来说 显然是不同的 这正是SE们所烦恼的 所以我的问题是SE们能否读取CSS 并用它进一步判断整个页
  • 生成具有给定分布的随机数

    看看这个问题 快速选择随机数的概率 https stackoverflow com questions 26092977 swift probability of random number being selected 最上面的答案建议使
  • 如何防止 HTML 文本孤儿?

    我经常在图像周围包裹文字 有时文字包裹起来很笨拙 如下所示 在 HTML 中 图像向左浮动 文本如下 p img src images image p p This is my David Copperfield em I was born
  • 如果覆盖率低于一定百分比,则单元测试失败

    我制作了一个执行的 makefilego test cover 是否有可能失败make unit tests如果覆盖范围低于 X 则命令 我该怎么做呢 您可以使用TestMain在你的测试中做到这一点 TestMain 可以充当测试的自定义
  • 我可以将 JPA 2.0 与 Google App Engine 一起使用吗?

    我可以将 JPA 2 0 例如 EclipseLink 与 Google App Engine 一起使用吗 Google AppEngine 的 DataNucleus 插件支持 JDO 和 JPA API 来访问 Google AppEn
  • 将属性类型作为参数传递

    有没有办法将属性作为参数传递给函数 class Car let doors Int 4 let price Int 1000 有没有办法将 Car 属性作为类型传递给函数 我想实现以下目标 func f1 car Car property
  • 无法将 QMap 传递到 SLOT

    所以 这有效 h public slots void addMenu QString passedName signals void clicked const QString text cpp signalMapper new QSign