1、QT_NO_CAST_FROM_ASCII 禁止将C语言风格的字符串或指针转自动转成Unicode。
char cc[] = "hello";
QString str = cc;
debug str;
QString str2 = "hello";
debug str2;
这里进行了转换,将C语言风格的字符指针:
const char * p = "hello";
和C语言风格的字符串cc[]转成一个QString,在pro文件中添加:
DEFINES += QT_NO_CAST_FROM_ASCII
之后,将禁止这样的转换:
2、QT_RESTRICTED_CAST_FROM_ASCII 禁止数组转换,允许指针转换成Unicode。
3、QT_NO_CAST_TO_ASCII 禁止将QString转成C字符串的操作
这里QByteArray的insert操作会调用QChar的toAscii()将QString转成C字符串插入到QByteArray,启用这个宏之后此操作就被禁止了。类似的还禁止append QString,insert QString,replace QString,禁止+= QString,禁止indexOf QString,禁止lastIndexOf QString。