我正在学习如何使用PyQt5 (在Windows上)构建GUI。我在PyQt4 (非PyQt5)中完成了一段代码的显式转换为PyQt4:
a=QApplication(args)
button=QPushButton(a.trUtf8("éàùè"),None)在谷歌了一会儿之后,我发现trUtf8被废弃了,现在Qt5假设您的代码已经被UTF8格式化了(链接):
QObject::trUtf8() and QCoreApplication::Encoding are deprecated. Qt assumes that the source code is encoded in UTF-8.所以,我想知道我应该做些什么来遵守这个声明。
即使我不是在寻找面向vim的解决方案,我也想补充一下,我正在使用Vim开发我的代码。因此,我在我的设置中添加了以下选项:
set encoding=utf-8
set fileencoding=utf-8对吗?够了吗?更普遍地说,UTF8与Qt5兼容需要什么?
谢谢!
发布于 2014-10-29 17:47:18
tr函数本身与编码/解码无关--它用于标记支持多种语言的应用程序中哪些直译字符串可能需要翻译(如果您熟悉gnu gettext,它的作用类似于_()函数)。
标记为转换的字符串只有在安装翻译员时才会被翻译。否则,字符串将不改变地传递。编码/解码方面只起作用,因为C++函数接受源字符串为const char* (即字节),并返回QString (即unicode)。因此,如果没有可用的转换,并且源字符串包含非ASCII字符,则需要执行默认解码步骤。在Qt4中,在某些情况下必须使用trUtf8显式地完成这一任务(请参阅医生们获得详细信息)--但在Qt5中,所有这些都可以单独由tr函数处理。
如果您在PyQt5中使用Python3,您几乎可以忽略所有这些问题,因为默认情况下,文字字符串是unicode,并且假定UTF-8是源代码编码。此外,PyQt5将始终为任何通常返回QString的Qt函数返回python对象。
当然,如果您不打算在应用程序中支持多种语言,则可以安全地省略tr的所有使用,因为否则它将无法执行任何有用的功能。
https://stackoverflow.com/questions/26631364
复制相似问题