Qt 5.0+ 中 connect 新语法与重载函数不兼容问题的解决方法,以及个人看法
2013-06-20 09:38
519 查看
Qt 5.0+ 版本提供了 connect 的新语法,相比之前的语法新语法可以提供编译期检查,使用也更方便。可是使用过程中发现一个小问题——当某个 signal 和成员函数是重载关系的时候,qmake 无法辨别应该选哪一个导致编译错误。
比如 QNetworkReply 中有这么俩函数:
这时候你直接用新语法绑定,就编译通不过。要解决这个问题有两个选择:
使用Qt 4.x 的 connect 语法。
显式定义一个函数指针。
后一种这么写:
PS: 其实类似的问题,用 c++ 的同学一定都遇到过,c++ 这门语言,除非你使用一个非常保守的子集,否则它一定会出现意外情况,尤其是当你喜欢编写某些语法糖的时候,标准里面任何角落里的某一个细节,都可能让你的解决方案变得很尴尬。
比如 QNetworkReply 中有这么俩函数:
// 成员函数 NetworkError error() const; // 信号 Q_SIGNALS: void error(QNetworkReply::NetworkError);
这时候你直接用新语法绑定,就编译通不过。要解决这个问题有两个选择:
使用Qt 4.x 的 connect 语法。
显式定义一个函数指针。
后一种这么写:
QNetworkReply* reply; MyClass* myObject; // ... void (QNetworkReply::*sig)(QNetworkReply::NetworkError); connect(reply, sig, myObject, &MyClass::mySlot);
PS: 其实类似的问题,用 c++ 的同学一定都遇到过,c++ 这门语言,除非你使用一个非常保守的子集,否则它一定会出现意外情况,尤其是当你喜欢编写某些语法糖的时候,标准里面任何角落里的某一个细节,都可能让你的解决方案变得很尴尬。
相关文章推荐
- HBase单机模式配置以及不能创建表问题的解决方法(Caused by: java.net.ConnectException: Connection refused)
- chrome,FireFox与IE中的不兼容问题以及解决方法——(不断更新)
- QT 全局变量所遇见的问题,以及参考网上的解决方法,做个总结,提醒自己
- Qt5.5+VS2013编译的程序在xp下兼容问题解决方法
- Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法
- session串的问题以及解决方法
- 编译海思sdk包遇到的问题以及解决方法(hello_world.srec错误 examples/standalone错误)
- 创建WCF服务项目遇到的问题以及解决方法
- ubuntu14.04 编辑 ffmpeg2.2.3 问题集合以及解决方法
- 学习Hibernate碰到的问题以及解决问题的方法(长期更新)
- Webview的一些问题汇总以及解决方法
- 在使用 Spring Boot 和 MyBatis 动态切换数据源时遇到的问题以及解决方法
- 本人整理ie6兼容问题的解决方法
- Fedora Core 5.0 中添加字体及应用程序字体设置方法及解决JVM乱码问题
- IOS下的safari下localStorage不起作用的问题以及解决方法
- volley 访问网络时候获取json数据发生乱码问题解决方法,以及gson解析json数据。
- TypeError: unhashable type: 'matrix'解决方法 以及 Python3下map函数的显示问题、 python numpy中nonzero()的用法
- Hadoop使用常见问题以及解决方法
- Android ValueAnimator时长错乱或者不起作用的解决方法以及问题分析
- JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结 【转】http://blog.csdn.net/uniqer/article/details/7789104