Qt 5.0+ 中 connect 新语法与重载函数不兼容题目的解决办法,以及小我见地

    添加时间:2013-6-20 点击量:

    Qt 5.0+ 版本供给了 connect 的新语法,比拟之前的语法新语法可以供给编译期搜检,应用也更便利。可是应用过程中发明一个小题目——当某个 signal 和成员函数是重载关系的时辰,qmake 无法判袂应当选哪一个导致编译错误。


    比如 QNetworkReply 中有这么俩函数:



    1 // 成员函数
    
    2 NetworkError error() const;
    3 // 旌旗灯号
    4 Q_SIGNALS:
    5 void error(QNetworkReply::NetworkError);


    这时辰你直接用新语法绑定,就编译通不过。要解决这个题目有两个选择:



    1. 应用Qt 4.x 的 connect 语法。

    2. 显式定义一个函数指针。


    后一种这么写:



    1 QNetworkReply reply;
    
    2 MyClass myObject;
    3
    4 // ...
    5
    6 void (QNetworkReply::sig)(QNetworkReply::NetworkError);
    7 connect(reply, sig, myObject, &MyClass::mySlot);



    PS: 其实类似的题目,用 c++ 的同窗必然都碰到过,c++ 这门说话,除非你应用一个很是保守的子集,不然它必然会呈现不测景象,尤其是当你喜好编写某些语法糖的时辰,标准里面任何角落里的某一个细节,都可能让你的解决规划变得很难堪。

    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: