'QString::QString(const char*)' is qstring.h private的原因和解决
来源:互联网 发布:聚划算与淘宝的关系 编辑:程序博客网 时间:2024/05/18 00:37
在qt4对QString构造函数进行调用时,常用的方法有如下两种:
QString objInfo = QString(obj->metaObject()->className());
QString temp = QString("%1 %2").arg("Hello").arg("World");
这两种创建qt4的方法在qt4都是没有任何问题的,但是一旦在qt5上使用这两种方法创建QString对象,就会出现“ QString::QString(const char*) is qstring.h private ”的错误。
查看IDE的提醒和qstring.h的源码,会发现在qt5中,QString::QString(const char*)是属于私有函数
也就是说,在qt5里面,QString::QString(const char*)已经是被修改为了私有成员函数,无法直接调用以创建对象。
那么为什么会有这个问题呢?这还要从QString的编码格式说起。我们常用的utf-8的编码格式,不同的字符的byte长度可能是不一样的,而为了加快数据处理QString使用的是utf-16的编码,这个编码所有字符的byte长度都是一样的。
为了解决编码的问题,qstring,h提供了各种转码函数,大体格式都是“from+原本编码格式”的命名方式,例如 QString::QStringfromUtf8()函数。
最后,需要如何解决最初提到的那个问题呢?
C++常用的字符串类型有char*、string以及使用qt时用到的QString。
下面简单列出一个string类型转换为QString的方法:
string temp = "Hello world";QString result;result = result.fromUtf8(temp.c_str());
- 'QString::QString(const char*)' is qstring.h private的原因和解决
- "QString" to "const char*"
- QString & QString::sprintf(const char * cformat, ...)应用
- QString和char *的转换
- std::string , Qstring和 const char * 的互相转换
- std::string ,QString和const char * 的互相转换
- qt qstring 和 char *
- const char* 转QString错误
- QString char*
- QString -> char *
- QString ->char
- QString
- QString
- qstring
- QString
- QString
- QString
- QString
- 大端小端(字节序)
- OpenCV图像读取与灰度化
- 数据结构---线性表---顺序存储
- 问题 A(1301): 湖的深度
- python异步并发模块concurrent.futures简析
- 'QString::QString(const char*)' is qstring.h private的原因和解决
- Java 抽象类
- gitLab的安装
- 如何使用微信、支付宝提现免手续费
- c++算法之回溯 八皇后延伸 N皇后问题
- Hive的数据存储及解析
- 无参装饰器与有参装饰器
- Codeforces Round #419 (Div. 2) D
- 钱多的没处花?程序员老司机教你如何5年攒百万