当前位置: 首页 > news >正文

【Qt】QSignalMapper

QSignalMapper 是 Qt 提供的一个用于信号映射的类,它允许将多个信号源(例如按钮点击)映射到一个单一的槽函数,并传递自定义参数。这在需要根据不同的触发对象执行相似逻辑时非常有用。

用法说明

  1. 创建 QSignalMapper 实例

     

    cpp

    QSignalMapper* signal_mapper = new QSignalMapper(this);

  2. 连接信号与映射关系

    • 将每个按钮的 clicked() 信号连接到 signal_mapper 的 map() 槽。
    • 使用 setMapping(QObject*, int) 设置对应的映射值。
     

    cpp

    connect(_btn, SIGNAL(clicked()), signal_mapper, SLOT(map())); signal_mapper->setMapping(_btn, index);

  3. 绑定最终处理逻辑

    • 连接 signal_mapper 的 mapped(int) 信号到实际处理函数。
     

    cpp

    connect(signal_mapper, SIGNAL(mapped(int)), this, SLOT(return_val(int)));

  4. 实现槽函数

    • 在槽函数中获取传入的 int 值并执行相应操作。
     

    cpp

    void PromptWidget::return_val(int index) { // 处理逻辑 }

示例代码片段

 

cpp

QSignalMapper* signal_mapper = new QSignalMapper(this);for (int index = 0; index < max_len; index++) {QPushButton* _btn = new QPushButton(btn_name[index], this);btn_layout->addWidget(_btn);connect(_btn, SIGNAL(clicked()), signal_mapper, SLOT(map()));signal_mapper->setMapping(_btn, return_val[index]);if (index == focus_idx) {_btn->setFocus();}
}connect(signal_mapper, SIGNAL(mapped(int)), this, SLOT(return_val(int)));

注意事项

  • QSignalMapper 已被标记为过时,在 Qt 5 中仍可用,但在 Qt 6 中已被移除。推荐使用 QMetaObject::invokeMethod 或 Lambda 表达式替代。
  • 如果你使用的是 Qt 5 及以上版本,请确保正确包含头文件 <QSignalMapper> 并链接相关模块。
http://www.lryc.cn/news/582290.html

相关文章:

  • 谢飞机的Java高级开发面试:从Spring Boot到分布式架构的蜕变之旅
  • 【音视频】HLS简介与服务器搭建
  • 常用的webpack配置
  • 应用俄文OCR技术,为跨语言交流与数字化管理提供更强大的支持
  • 解数独(C++版本)
  • 关于Xinference 中部署服务不能成功的若干问题整理(持续迭代)
  • 安卓10.0系统修改定制化_____安卓9与安卓10系统文件差异 有关定制选项修改差异
  • NLP:文本特征处理和回译数据增强法
  • uniapp三步完成生成一维码图片
  • C#和SQL Server连接常用通讯方式
  • 基于4.14 kernel ARM V7 单核cpu swi功能的验证方法
  • kong网关基于header分流灰度发布
  • 揭秘图像LLM:从像素到语言的智能转换
  • ClickHouse 入门详解:它到底是什么、优缺点、和主流数据库对比、适合哪些场景?
  • 【K线训练软件研发历程】【日常记录向】1.K线滑动窗口
  • 【数据结构】第七弹——Priority Queue
  • Kafka 消费者组再平衡优化实践指南
  • 赛事开启|第三届视觉语音识别挑战赛 CNVSRC 2025 启动
  • RedisTemplate在Spring Boot中的五种数据结构全面详解
  • 电脑电压过高的影响与风险分析
  • 【Java安全】反射基础
  • ARMv7单核CPU上SWI(软件中断)验证
  • 前端面试专栏-算法篇:20. 贪心算法与动态规划入门
  • SQL Server表分区技术详解
  • 瑞斯拜考研词汇课笔记
  • 基于Java+SpringBoot 的销售项目流程化管理系统
  • 深度学习机器学习比较
  • 【ROS2 自动驾驶学习】02-安装ROS2及其配套工具
  • Java 内存分析工具 Arthas
  • 卷积神经网络:卷积层的核心原理与机制