为何用QOverload连接Qt信号与槽?含of作用及errorOccurred疑问
Qt中QOverload::of()与errorOccurred信号连接的疑问解答
1. 代码中of的作用是什么?
QOverload是Qt提供的模板类,专门用来解决重载函数地址的歧义问题。of是它的静态成员函数,作用是接收你指定的重载函数指针,返回一个匹配模板参数类型的明确函数指针实例——简单说就是帮编译器精准定位到你要使用的那个重载版本的信号(或函数)。
2. 针对QAbstractSocket::errorOccurred信号,为何要使用QOverload?
因为QAbstractSocket的errorOccurred信号存在重载版本,直接写&QAbstractSocket::errorOccurred时,编译器无法确定你要引用的是哪一个重载信号。QOverload<QAbstractSocket::SocketError>通过指定信号的参数类型,明确告诉编译器我们要连接的是携带QAbstractSocket::SocketError类型参数的那个errorOccurred信号,彻底避免了编译时的歧义问题。
内容的提问来源于stack exchange,提问作者HwSwDesigner
相关产品推荐
相关产品推荐

