MqttServer.cpp:125:43: No viable conversion from 'std::string' (aka 'basic_string<char>') to 'const QByteArray' qbytearray.h:181:5: candidate constructor not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'const char *' for 1st argument qbytearray.h:189:12: candidate constructor not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'QByteArray &&' for 1st argument qbytearray.h:463:12: candidate constructor not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'QByteArrayDataPtr' for 1st argument qbytearray.h:524:20: candidate constructor not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'const QByteArray &' for 1st argument qbytearray.h:405:67: passing argument to parameter 'hexEncoded' here
时间: 2023-10-14 21:06:00 浏览: 253
这个错误的意思是说,你正在尝试将一个`std::string`类型的变量转换为`QByteArray`类型,但是`QByteArray`没有一个可以接受`std::string`类型参数的构造函数。
要解决这个问题,你需要将`std::string`类型转换为`QByteArray`类型。你可以使用`QByteArray::fromStdString()`函数来实现这一点,例如:
```
std::string myString = "hello";
QByteArray myByteArray = QByteArray::fromStdString(myString);
```
这将把`myString`转换为一个`QByteArray`类型的变量`myByteArray`。你可以在你的代码中使用类似的方法来解决这个问题。
相关问题
QByteArray::fromHex(hex_str);报错form_para.cpp:342:68: No viable conversion from 'QString' to 'const QByteArray' qbytearray.h:181:5: candidate constructor not viable: no known conversion from 'QString' to 'const char *' for 1st argument qbytearray.h:189:12: candidate constructor not viable: no known conversion from 'QString' to 'QByteArray &&' for 1st argument qbytearray.h:463:12: candidate constructor not viable: no known conversion from 'QString' to 'QByteArrayDataPtr' for 1st argument qbytearray.h:524:20: candidate constructor not viable: no known conversion from 'QString' to 'const QByteArray &' for 1st argument qbytearray.h:405:67: passing argument to parameter 'hexEncoded' here
根据您提供的信息,这个错误是因为您使用了不同类型的参数。函数QByteArray::fromHex()需要一个十六进制字符串作为输入,而您传递了一个QString类型的参数,导致编译器无法将其转换为QByteArray类型。您需要将QString类型的参数转换为QByteArray类型的十六进制字符串,然后再将其传递给函数QByteArray::fromHex()。您可以使用QString的toUtf8()函数将QString转换为QByteArray类型的十六进制字符串,然后再将其传递给QByteArray::fromHex()函数。例如:
QString hex_str = "616263";
QByteArray hex_data = QByteArray::fromHex(hex_str.toUtf8());
/home/xhl18/client_qt/myjson.cpp:181: error: no viable conversion from 'std::__cxx11::string' (aka 'basic_string<char>') to 'QString'
这个错误提示是因为无法将类型为`std::string`的对象转换为`QString`类型的对象。您需要使用`QString::fromStdString()`函数将`std::string`类型对象转换为`QString`类型对象。例如,您可以这样处理:
```
std::string str = "Hello World!";
QString qstr = QString::fromStdString(str);
```
这样就可以将`std::string`类型的字符串转换为`QString`类型的字符串了。
阅读全文
相关推荐
















