Python 2.5.4 PyQt4
我将 QDoubleSpinBox 子类化为在 focusIn 事件上发出信号:
#Custom widgets for DPL GUI
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class DPLDoubleSpinBox(QDoubleSpinBox):
__pyqtSignals__ = ("valueChanged(double)", "focusIn()")
def __init__(self, *args):
QDoubleSpinBox.__init__(self, *args)
def event(self, event):
if(event.type()==QEvent.FocusIn):
self.emit(SIGNAL("focusIn()"))
#self.clear() Works as expected
self.selectAll() #See below
return QDoubleSpinBox.event(self, event)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
widget = DPLDoubleSpinBox()
widget2 = DPLDoubleSpinBox()
widget.show()
widget2.show()
sys.exit(app.exec_())
如果您在一个框内单击,然后杀死另一个窗口,它可以工作。如果您单击一个内部,然后单击另一个,然后将焦点放在桌面上的任何其他窗口上,它似乎可以工作。
我认为这是一个焦点问题,但无法追踪。我只需要它在单击时全选。我尝试通过它的行编辑指针来做,但我得到了相同的结果。尝试强制关注其他小部件,但结果仍然相同。
您可以连接自定义插槽以在它发出“focusIn()”时触发。然后您可以使用任何QSpinBox.selectAll(),它可以工作,只是不能在其自身上工作。