我将我的项目从Qt4移植到Qt5,现在出现以下问题。
从Qt5开始,构造函数QString(const char*)
假定传递的字符串是Utf8编码的。这会破坏我的代码,因为QStrings
通常会转换为char*
(toLatin1()
- 对于第三方库api),而只会转换为QString(const char*)
而不是fromLatin1()
。
使用预编译器标记QT_NO_CAST_FROM_ASCII
和QT_NO_CAST_TO_ASCII
,可以发现隐式转换。但我不想重构我支持Utf8的庞大项目,我对Latin1编码完全没问题。
如何在Qt4中让QString
构造函数像以前一样工作?是否有Qt4中可用的QTextCodec::setCodecForCStrings
替代品?