我有一个窗口包含多个QRowWidget
s,这是我定义的自定义窗口小部件。这些QRowWidget
包含QLineEdit
和其他标准小部件。要显示或隐藏某个QRowWidget
的某些部分,我重新定义了其中所有小部件的方法focusInEvent()
。它完美的工作,当我点击QRowWidget
,隐藏的元素出现。光标已在PyQT
奇怪的是,闪烁的光标行hovewer不出现在自定义小部件中的QLineEdit
中。我可以通过鼠标点击或使用Tab键来选择它们,并且发光效果表示在其中选择了QLineEdit
,我可以在其中选择一个文本,或者在任何我点击的位置开始输入,但是光标永远不会出现并且这很烦人。
我的第一个想法是,这是一个Mac上的错误,但我在SuSe Linux上有相同的经验。
我正在使用python 2.7和PyQt4。
这是QRowWidget
的__init__()
:
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
你可以发布你的'focusInEvent()'的代码吗?我以预感回答,但准确地展示你正在做的事情会让你获得更好的答案。 – tacaswell