問題タブ [qvalidator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
16638 参照

c++ - QDoubleValidator が機能していませんか?

Qt 4.2 の行編集ボックスでバリデーターを適用しようとしていますが、機能していません:

また

どちらの場合でも、必要な値を入力できます。

しかし、に切り替えるとQIntValidator、うまくいきます!

そこで私は Google にアクセスして少し検索しましたが、以前は多くの人が同じ問題を抱えていました。バグですか?または、私がしなければならない他のセットアップが必要ですか?

0 投票する
1 に答える
1441 参照

c++ - QLineEdit::textEdited() 内から編集前のテキストを取得する

シグナルを受信したときにQLineEdit::textEdited()、編集前のテキストを確認できますか? 編集前のテキストと編集後のテキストを比較する必要があります。

textEdited()シグナルには、新しいテキストである引数が 1 つだけあります。を呼び出すQLineEdit::text()と、新しいテキストも返されます。

今のところ、古いテキストを QString に保持し、編集があるたびにその QString を更新することしか考えられませんが、プログラムによる変更 (を介して行われるQLineEdit::setText()) を考慮する必要があります。

または、変更前と変更後に同時にテキストを取得できるテキスト変更を (おそらくバリデーターを介して) 傍受する別の方法はありますか? できれば、ユーザー変更のみ (非プログラム的) にします。

0 投票する
1 に答える
2520 参照

qt - QLineEdit をプログラムで検証する

を呼び出しQLineEditても、 の現在のテキストは検証されません。 プログラムで検証するにはどうすればよいですか (マウス操作でフォーカスとフォーカス解除)QDoubleValidatorQDoubleValidator::setRangeQLineEdit

ここに私の継承のコードがありますQDoubleValidator

そして私の継承されたコードQLineEdit

を呼び出すとDoubleLineEdit::setRange()、 の現在のテキストがDoubleLineEdit検証および修正されません。

このコードでedit->text()は 100 のままなので、自動的に 10 に変更したいと思います。

私は作業DoubleLineEdit::validate方法を実装しました:

しかし、それは単なるトリックであり、より良い解決策があるかもしれません。

0 投票する
2 に答える
2841 参照

c++ - QDoubleValidator は複数の小数点を受け入れます

に を使用しQDoubleValidatorていQLineEditます。アプリケーションのロケール (QtCreator で設定) はQLocale::German.

これで、有効な double を入力すると (ドットまたはコンマを小数点記号として使用して)、textedit への書き込みと、文字列の float への変換が完全に正常に機能します。しかし、バリデーターを使用すると、複数の小数点記号を使用して何かを書くこともできます。文字列は like123.567,890または,,03.4...get 検証されますが、float に変換することはできません。

アルファベット文字のない文字列だけでなく、実数QDoubleValidatorのみを検証するように指示する方法はありますか?

私は基本的に、デフォルトのロケールまたはドイツ語のロケールを使用して浮動小数点数に変換できる、文字列のみを検証するバリデーターが必要です。

0 投票する
1 に答える
130 参照

regex - QLineEdit: ユーザーがアスタリスク (*) を入力できないようにする方法は?

アプリケーションで QLineEdit を使用しています。ユーザーがテキストのどこにも「*」を入力できないようにしたい。QRegExpValidator を試しましたが、適切な正規表現を設定できませんでした。助けてください。

0 投票する
1 に答える
6333 参照

c++ - QValidator を使用した QLineEdit: 入力の有効性に関係なく、編集が終了したことに反応しますか?

QLineEditユーザーが編集を終了したときに発行される信号QLineEdit::editingFinishedがあります。たとえば、Enter キーを押すことによってです。ただし、バリデーターまたは入力マスクが設定されeditingFinishedている場合は、入力が有効な場合にのみ発行されます。

しかし、入力の有効性に関係なく、編集を終了したユーザーにどのように反応できますか? 入る、戻る、ウィジェットがフォーカスを失っているなどを手動で確認する必要がありますか?

この理由: を使用して数値を編集するためのカスタム ウィジェットを作成したかったのQDoubleValidatorです。ユーザーが編集を終了し、入力が無効な場合 (間違った範囲、空のテキストなど)、有効なデフォルト値にリセットしたいと考えています。このようなもの: