D:\QT\InverterCAN\CAN\mainwindow.cpp:17: error: no matching function for call to 'MainWindow::connect(CANThread*&, void (CANThread::*)(VCI_CAN_OBJ*, unsigned int, unsigned int), MainWindow*, void (ReveDataProc::*)(VCI_CAN_OBJ*, quint32, quint32))' connect(canthread,&CANThread::getProtocolData,this,&ReveDataProc::onGetProtocolData); ^
时间: 2023-07-16 21:16:57 浏览: 43
这个错误是因为 `connect` 函数中的第二个参数的类型不匹配。
`CANThread::getProtocolData` 的声明可能是这样的:
```cpp
void CANThread::getProtocolData(VCI_CAN_OBJ* data, unsigned int len, unsigned int id);
```
而 `ReveDataProc::onGetProtocolData` 的声明可能是这样的:
```cpp
void ReveDataProc::onGetProtocolData(VCI_CAN_OBJ* data, quint32 len, quint32 id);
```
可以看到,它们的参数类型不完全匹配。具体来说,`len` 和 `id` 的类型不同,并且 `quint32` 是 Qt 中的 typedef,它与无符号整数类型 `unsigned int` 不同。
为了解决这个问题,你需要修改 `ReveDataProc::onGetProtocolData` 的声明,让它的参数类型与 `CANThread::getProtocolData` 完全匹配。例如,你可以这样声明它:
```cpp
void ReveDataProc::onGetProtocolData(VCI_CAN_OBJ* data, unsigned int len, unsigned int id);
```
然后,在 `connect` 函数中调用 `&ReveDataProc::onGetProtocolData` 即可。
```cpp
connect(canthread, &CANThread::getProtocolData, this, &ReveDataProc::onGetProtocolData);
```