Qt 5 当类的信号函数和成员函数,函数名相同时,连接信号和槽的写法。
前言:因为项目需要,软件要在windows7上运行,然后项目目前是qt6写的,然后搜索资料,需要qt5.15.2或之前的版本才能在win7上运行,于是下载了qt5.15.2,将qt6的代码在qt5编译时,很多错误,一些莫名其妙的错,比如函数没有定义的错误,此时需要将头文件和源文件的编码格式改成GB2312才行;有些qt6新增的函数得改成qt5中有的函数。因为用到蓝牙,所以写了个蓝牙管理器类,发现连接信号和槽时,提示参数不一致错误,仔细看了api,才发现成员函数名和信号函数名一样,导致原来的那种连接方式会报错,后来换了一种写法才行,以此记录修改过程。
连接信号和槽的两种写法
1)简写法,适合信号函数和成员函数,函数名不会相同的情形。
// 示例,QBluetoothDeviceDiscoveryAgent类中,成员函数error()和信号函数error(QBluetoothDeviceDiscoveryAgent::Error),函数名一样,此种写法编译(vs2019编译)报错
connect(m_deviceDiscoveryAgentPtr, &QBluetoothDeviceDiscoveryAgent::error,this, &BleClientManager::onDeviceDiscoveryErrorOccurred); //设备发现出现错误,因为信号函数和成员函数的函数名一样,无法这样写
2)注明信号函数和槽函数参数的写法,对于信号函数和槽函数,函数名相同时,也适用。
connect(m_deviceDiscoveryAgentPtr, SIGNAL(error(QBluetoothDeviceDiscoveryAgent::Error)),this, SLOT(onDeviceDiscoveryErrorOccurred(QBluetoothDeviceDiscoveryAgent::Error))); //设备发现出现错误