2

PyQt4でQLineEditlineEdit_X_Position入力を作成しました。

self.ui.lineEdit_X_Position.setInputMask( "00,000.00; _")を使用して入力マスクを作成しました。

lineEditをデフォルト値self.ui.lineEdit_X_Position.setText(format( '6543.21'、 "、.2f"))で設定しました。

UIを表示すると、X_Positionが「_6,543.21」ではなく「6_、543.21」と表示されます。self.ui.lineEdit_X_Position.setText(format( '6543.21'、 "9.2f"))でデフォルトを設定しようとしましたが、結果は「65,43_.21」です。

デフォルト値が「543.21」の場合、最悪になります。結果は「54,3__。21」になります。

これはQInputMaskのバグですか?ユーザーが数字しか入力できないQInputMask形式で正しい結果を得るにはどうすればよいですか?

また、doubleの結果を検証したい場合、QDoubleValidatorを使用するにはどうすればよいですか?有効な範囲は0.00〜10,000.00です。

4

1 に答える 1

2

にバグはありませんQInpuMask

設定したマスクにより、特定の値をさまざまな方法で入力できます。これらの方法はすべて等しく有効です。たとえば、値「543.2」は、5_,_4_3._2または__,543.2_、 または_5,4__3._2などとしてユーザーが入力できます。

このような値がプログラムで入力されると、Qt はさまざまな可能性のうちどれが「優先」されるかを推測できず、通常入力される方向に空白を埋めるだけです。したがって、表示されている出力は正しく、まさに期待どおりです。

しかし、固定パターンの文字ではなく特定の範囲の数値に値を制限しようとしている場合、入力マスクは本当に正しい選択でしょうか?

A のQDoubleSpinBox方がはるかに適しているように思われます。

self.spinXPosition = QtGui.QDoubleSpinBox(self)
self.spinXPosition.setRange(0, 10000)
self.spinXPosition.setDecimals(2)
于 2012-11-05T19:05:10.330 に答える