我有一个包含多个QRowWidget
s 的窗口,它们是我定义的自定义小部件。这些QRowWidget
s 包含QLineEdit
s 和其他标准小部件。为了显示或隐藏 a 的某些部分QRowWidget
,我超定义了focusInEvent()
其中所有小部件的方法。它工作得很好,当我点击 时QRowWidget
,隐藏的元素就会出现。
奇怪的是,闪烁的光标线没有出现在QLineEdit
自定义小部件的 s 中。我可以通过单击鼠标或使用 Tab 来选择它们,并且发光效果表明QLineEdit
在其中选择了,我可以在其中选择文本,或者在我单击的任何位置开始输入,但光标永远不会出现,它是很烦人。
我的第一个想法是它是 Mac 上的一个错误,但我在 SuSe Linux 上也有同样的经历。
我正在使用 python 2.7 和 PyQt4。
这是__init__()
在QRowWidget
:
for i in self.findChildren(QWidget):
i.focusInEvent = self.focusInEvent
然后这是自己的focusInEvent()
:
def focusInEvent(self, event):
if self.pself.focusedLine:
self.pself.focusedLine.setStyleSheet("color: #666;")
self.pself.focusedLine.desc.hide()
self.pself.focusedLine.closebutton.hide()
self.setStyleSheet("color: #000;")
self.desc.show()
self.closebutton.show()
self.pself.focusedLine = self