当我为gui使用最多qt4.8(qt quick 1.1)时,我可以成功打印出度数,\260
但是当事情升级到qt5及更高版本时,它就停止工作了。我在网上搜索后发现许多相关的链接,例如(http://www.fileformat.info/info/unicode/char/00b0/index.htm)我尝试但没有帮助。我需要为usinfUTF
格式包含一些库吗,还是其他问题。请一些帮助。该怎么办?
@Revised,这里描述正在做的事情。
首先,我将可打印语句存储在string中text
。如在cpp函数中:
sprintf(text, "%02d\260 %03d\260 ",latD, longD);
QString positionText(text.c_str());
return positionText;
然后使用positionText
qml文件显示在窗口上。
所以,有人请回答我需要做什么才能获得学位?
谢谢。
问题很简单,您\260
很可能在Ansii C字符串(const char []
)中使用了。在这种情况下,Qt使用某些编解码器将此代码转换为Unicode字符。由于某些原因,当您更改Qt版本时,默认编解码器也已更改,这就是为什么它停止工作的原因。
无论如何,您的方法是错误的。您不应该使用编解码器所依赖的C字符串(通常会导致此类问题)。您可以将QChar const定义为QChar(0260)
或使用tr
和提供翻译的最佳方法。
最好用带度数字符的字符串作为代表示例,然后有人会为您提供最佳解决方案。
我会像这样更改您的代码:
const QChar degreeChar(0260); // octal value
return QString("%1%3 %2%3").arg(latD, 2, 10, '0').arg(longD, 3, 10, '0').arg(degreeChar);
或添加将处理以下内容的翻译:
return tr("%1degree %2degree").arg(latD, 2, 10, '0').arg(longD, 3, 10, '0');
请注意,此行的这种翻译仅需始终添加,而不必考虑当前的语言环境。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句