我以前的理解是PySide不需要QString。然而,我发现PySide(我在Python v2.7.5中使用v1.2.1)在这方面似乎不一致,这取决于我如何连接我的信号和插槽:
# This Way of wiring up signals and slots requires str
le = QLineEdit()
slotOnChanged = self.onChanged
le.textChanged[str].connect(slotOnChanged)
# But this Way requires QString
le = QLineEdit()
signalTextChanged = SIGNAL("textChanged(QString)")
slotOnChanged = self.onChanged
le.connect(signalTextChanged, slotOnChanged)
PySide不需要QString类是正确的,但是错误地认为存在任何不一致性。在
简而言之:效率。在
QString由QChar组成。这些提供了C++和Python绑定之间的跨平台兼容性(以及更容易的语言翻译);Python中的字符串与C++中的字符串通常是不同的。Qt提供自己的。在
textChanged(QString)使用QString是因为。。。 1) 它可以在语言绑定之间提供一个更不可知的类型, 2) 它避免了第一个示例中发生的类型转换,而且效率更高。在
Here是QString的详细描述。注意隐式共享的链接。在
Here是PySide更惯用的其他可能性的例子。在
相关问题 更多 >
编程相关推荐