下面以最常用的QComboBox为例说明。

【1】Qt4风格的connect

示例代码:

 connect(ui->comboBox, SIGNAL(activated(int index)), this, SLOT(onActivated(int nIndex)));

观察Qt4风格,可知第二个参数即使信号重载,也不会出现歧义。

【2】Qt5风格的connect

示例代码:

 connect(ui->comboBox, &QComboBox::activated, this, &MyWidget::onActivated);

但是,针对QComboBox对象,这样的信号槽连接,编译器会报编译错误:

     // error: C2664: “QMetaObject::Connection QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const”:
// 无法将参数 2 从“overloaded-function”转换为“const char *”上下文不允许消除重载函数的歧义

经查询分析,原因如下:

 Q_SIGNALS:
void editTextChanged(const QString &);
void activated(int index);
void activated(const QString &);
void highlighted(int index);
void highlighted(const QString &);
void currentIndexChanged(int index);
void currentIndexChanged(const QString &);
void currentTextChanged(const QString &);

可知,因QComboBox的activated信号有重载实现导致。

【3】Qt5风格信号重载的connect方式

示例代码:

 // 两种正确方式:
// 方式1:
typedef void (QComboBox::*QComboIntSignal)(int);
connect(ui->comboBox, static_cast<QComboIntSignal>(&QComboBox::activated), this, &MyWidget::onActivated); // 方式2:
connect(ui->comboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &MyWidget::onActivated);

Qt助手范例:

Good Good Study, Day Day Up.

顺序 选择 循环 总结

最新文章

  1. Redis简单案例(二) 网站最近的访问用户
  2. 面向对象Part1对象的创建和Static!
  3. 学UNITY的基础
  4. Mybatis传多个参数(三种解决方案)
  5. TCL:表格(xls)中写入数据
  6. [Java 进阶]异常
  7. UIButton(改变Title和image位置)
  8. Jquery Mobile中pageinit等函数执行两次的问题【终极解决】
  9. svnUbuntu下安装与使用(ZT)
  10. OpenReports操作指南
  11. IE CSS Bug 系列
  12. C#开发学习——SqlHelper的应用
  13. 初码-Azure系列-文章目录
  14. ASP.NET 给Web中的网页添加Loading进度条形式
  15. CentOS7离线安装mysql5.7
  16. js三种弹出框的用法
  17. 云栖大会day1 上午
  18. Gis数据处理2 ---8.18
  19. L2-013. 红色警报(并查集)*
  20. C#读取Excel表格的数据

热门文章

  1. Lua: 给 Redis 用户的入门指导(转)
  2. 3.0-uC/OS-III简介(操作系统结构)
  3. block详解
  4. Navicat工具的使用 2
  5. MySql left join 多表连接查询优化语句
  6. react +webpack 配置px2rem
  7. Centos7安装jdk1.8并查找jdk安装目录
  8. 数据结构与算法之PHP实现链表类(单链表/双链表/循环链表)
  9. HBase 数据迁移方案介绍 (转载)
  10. [js]this和call.call