/home/vrv/src/EDSMClient-XC_svn/MainUI3/switch.cpp:42: 错误: no match for ‘operator=’ (operand types are ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ and ‘QString’) m_UserName = setting.value("USERINFO/UserName", "").toString(); ^
时间: 2024-04-12 07:29:43 浏览: 101
大金空调VRV3实用维修技术 事务所资料.ppt
这个错误是因为在C++中,`std::string`和`QString`是两种不同的字符串类型,它们之间不能直接进行赋值操作。
要解决这个错误,你需要将`QString`类型的字符串转换为`std::string`类型的字符串。Qt提供了多种方法来进行字符串类型之间的转换。
一种常见的方法是使用`toStdString()`函数将`QString`转换为`std::string`:
```cpp
m_UserName = setting.value("USERINFO/UserName", "").toString().toStdString();
```
另一种方法是使用`fromStdString()`函数将`std::string`转换为`QString`:
```cpp
m_UserName = QString::fromStdString(setting.value("USERINFO/UserName", "").toString().toStdString());
```
请注意,如果你计划在Qt的信号和槽机制中使用这些字符串,最好使用`QString`类型,因为它与Qt的其他功能更兼容。只有在需要将字符串传递给使用`std::string`的库或函数时,才将其转换为`std::string`类型。
阅读全文