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_())
1 つのボックス内をクリックしてから、もう 1 つのウィンドウを強制終了すると、機能します。1 つをクリックしてからもう 1 つをクリックし、デスクトップ上の他のウィンドウにフォーカスすると、動作するようです。
フォーカスの問題だと思いますが、追跡できません。クリックしたときにすべてを選択するだけです。行編集ポインターを使用して実行しようとしましたが、同じ結果が得られます。他のウィジェットにフォーカスを強制しようとしましたが、それでも同じ結果です。
カスタム スロットを接続して、「focusIn()」を発行したときに起動することができます。その後、anyQSpinBox.selectAll() を実行できますが、それ自体では機能しません。