QT中Connect函数学习


今天学习QT学习之路的自定义信号槽例程,把connect中的信号和槽参数用实例化的方法去调用,发现编译报以下错误:

error: 'reader' is not a class or namespace
&reader, &reader::receiveNewspaper);

error: 'newspaper' is not a class or namespace
QObject::connect(&newspaper, &newspaper::newPaper, \

原来是没有按照例程写为

QObject::connect(&newspaper, &Newspaper::newPaper, &reader, &Reader::receiveNewspaper);

一般调用类中的方法都是先实例化,开始也不明白为什么,最后查找资料,原来QObject::connect 是一种 static 类型的方法,普通的的类的方法是
必须通过实例化的对象调用的,但是声明为 static 类型的方法是属于类的,不是属于对象的,可以直接用类名进行调用。

然后在帮助文档中发现connect没有写明是static方法,

 

最后去网上查资料发现,原来是moc系统中已经将函数处理,其实connect函数就是static方法。详细说明见stack overflow中说明,以下是网址:

https://stackoverflow.com/questions/29218092/where-is-qt-s-pointertomemberfunction-defined

 

小的知识点:

1、自定义信号槽时,如果用到自己定义的类型,必须要先用qRegisterMetaType()函数注册好,才能创立信号槽连接。

 

 


					


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM