2

プロジェクトに QLineEdit があります。lineEdit で QValidation を使用したい。

#Create lineEdit
itemValue = QtWidgets.QLineEdit()
#Create валидатор
objValidator = QtGui.QDoubleValidator(self)
#setup range
objValidator.setRange(-10.0, 100.0, 5)
#lineEdit with validation
itemValue.setValidator(objValidator)

しかし、うまく機能しません。記号以外は、必要なものを入力できます。範囲が機能しません!100500 または -100500 を入力できますが、そのユーザーは範囲内でのみ数値を入力できます。

範囲をどのように使用すればよいですか?私は助けが必要です:)

助けてくれてありがとう、みんな!

4

3 に答える 3

4

デフォルトでは、バリデーターは範囲外の値が入力されるのを防ぎません。また、入力された値がInvalid または Intermediateの場合、ユーザーが行編集を終了するのを防ぎません。

ただし、現在の値が受け入れられない場合はいつでも、行編集はそのeditFinishedまたはreturnPressedシグナルを発行せず、そのhasAcceptableInputメソッドは を返すため、プログラムで入力を拒否する機会が与えられますFalse。さらに、バリデーターをサブクラス化すると、そのfixupメソッドを再実装して、入力される値を制御できます。

ただし、すでに提案されているようにQDoubleSpinBox、入力を自動的にクリーンアップし、よりユーザーフレンドリーなインターフェイスを提供するため、はるかに優れた/より簡単なソリューションは を使用することです。

于 2014-03-14T21:30:06.783 に答える