Qt 的 QRegExp 类完全没问题,但是 python 的 re 模块要灵活得多。一般的字符串处理也是如此——如果你需要在 PyQt 程序中进行大量的字符串处理,如果可以的话,通常最好在 python 中完成。
转换 QString 非常简单。在python2中,你只需要这样做:
string = unicode(qstring)
而且通常不需要将其转换回来:任何需要 QString 的 Qt api 都将由 PyQt 自动从 python 字符串转换。
一个更通用的 QString 转换解决方案是使用sip 模块在全局基础上进行转换(无论在哪里安装 PyQt,它都应该已经可用)。这需要在 PyQt 程序的开头,在导入任何 PyQt 模块之前完成,如下所示:
import sip
sip.setapi('QString', 2)
from PyQt4 import QtCore, QtGui
这样做之后,任何通常返回 QString 的 Qt API 都将返回一个 python unicode 对象。有关此功能的更多信息,请参阅PyQt 文档中的选择不兼容的 API。
尽管最初可能需要更多的工作,但从长远来看,走这条路可能是最好的。一方面,如果您需要的话,它将使移植到 python3 更容易。对于 python3,默认选择版本 2 API,因此setapi
不需要上述步骤。