博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt5 信号重载
阅读量:4471 次
发布时间:2019-06-08

本文共 1325 字,大约阅读时间需要 4 分钟。

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

【1】Qt4风格的connect

示例代码:

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

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

【2】Qt5风格的connect

示例代码:

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

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

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

经查询分析,原因如下:

1 Q_SIGNALS:2     void editTextChanged(const QString &);3     void activated(int index);4     void activated(const QString &);5     void highlighted(int index);6     void highlighted(const QString &);7     void currentIndexChanged(int index);8     void currentIndexChanged(const QString &);9     void currentTextChanged(const QString &);

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

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

示例代码:

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

 Qt助手范例:

 

 

Good Good Study, Day Day Up.

顺序 选择 循环 总结

转载于:https://www.cnblogs.com/Braveliu/p/7079166.html

你可能感兴趣的文章
本周ASP.NET英文技术文章推荐[01/28 - 02/03]
查看>>
运行时库组件 RuntimePack v19.06.05 Full 纯净安装版
查看>>
NYOJ100 - 1的个数
查看>>
左侧定宽右侧自适应布局
查看>>
文件和目录的访问控制(4) 审核规则
查看>>
搭建svn的一些问题
查看>>
Python 爬虫插件
查看>>
【BZOJ-3809】Gty的二逼妹子序列 分块 + 莫队算法
查看>>
Noip 2011 Day 1 & Day 2
查看>>
一些有用的资源分享(工具+电子书)
查看>>
虚拟现实-ar one
查看>>
python接口自动化测试二十五:执行所有用例,并生成HTML测试报告
查看>>
c# 指定的存储区提供程序在配置中找不到,或者无效
查看>>
最简陋的python数据
查看>>
第一堂java web课
查看>>
操作系统简介
查看>>
第1周小组博客作业--1703班06组
查看>>
vue项目中icon图标的完美引入
查看>>
C语言指针
查看>>
Java的安装
查看>>