【发布时间】:2014-06-15 17:18:59
【问题描述】:
我需要检查 qlabel 的值 (str) 是否更改。 我考虑使用以下代码(与 PyQt 中的 spinbox 小部件使用的代码几乎相同):
self.connect(self.ui.labelEntry, QtCore.SIGNAL("valueChanged(str)"), self.autovalidate)
检查值是否改变的正确方法是什么?
一切顺利;
【问题讨论】:
我需要检查 qlabel 的值 (str) 是否更改。 我考虑使用以下代码(与 PyQt 中的 spinbox 小部件使用的代码几乎相同):
self.connect(self.ui.labelEntry, QtCore.SIGNAL("valueChanged(str)"), self.autovalidate)
检查值是否改变的正确方法是什么?
一切顺利;
【问题讨论】:
QLabels 没有 valueChanged/textChanged 信号。您要么必须使用另一种小部件类型(例如 QLineEdit),要么将 QLabel 子类化并使用textChanged 信号创建您自己的变化感知类。
如果您使用 QtDesigner,使用第一个解决方案并从 Designer 自定义您的 QLineEdit 可能会更简单。在属性编辑器中,取消选中frame,选中readOnly,并在styleSheet 中写入background-color:"transparent",您就有了一个看起来像QLineEdit 的QLabel。
你也应该使用new-style syntax,它更优雅。
self.ui.labelEntry.textChanged.connect(self.autovalidate)
【讨论】: