問題タブ [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.
c++ - QDoubleValidator が機能していませんか?
Qt 4.2 の行編集ボックスでバリデーターを適用しようとしていますが、機能していません:
また
どちらの場合でも、必要な値を入力できます。
しかし、に切り替えるとQIntValidator
、うまくいきます!
そこで私は Google にアクセスして少し検索しましたが、以前は多くの人が同じ問題を抱えていました。バグですか?または、私がしなければならない他のセットアップが必要ですか?
c++ - QLineEdit::textEdited() 内から編集前のテキストを取得する
シグナルを受信したときにQLineEdit::textEdited()
、編集前のテキストを確認できますか? 編集前のテキストと編集後のテキストを比較する必要があります。
textEdited()
シグナルには、新しいテキストである引数が 1 つだけあります。を呼び出すQLineEdit::text()
と、新しいテキストも返されます。
今のところ、古いテキストを QString に保持し、編集があるたびにその QString を更新することしか考えられませんが、プログラムによる変更 (を介して行われるQLineEdit::setText()
) を考慮する必要があります。
または、変更前と変更後に同時にテキストを取得できるテキスト変更を (おそらくバリデーターを介して) 傍受する別の方法はありますか? できれば、ユーザー変更のみ (非プログラム的) にします。
qt - QLineEdit をプログラムで検証する
を呼び出しQLineEdit
ても、 の現在のテキストは検証されません。
プログラムで検証するにはどうすればよいですか (マウス操作でフォーカスとフォーカス解除)QDoubleValidator
QDoubleValidator::setRange
QLineEdit
ここに私の継承のコードがありますQDoubleValidator
そして私の継承されたコードQLineEdit
:
を呼び出すとDoubleLineEdit::setRange()
、 の現在のテキストがDoubleLineEdit
検証および修正されません。
このコードでedit->text()
は 100 のままなので、自動的に 10 に変更したいと思います。
私は作業DoubleLineEdit::validate
方法を実装しました:
しかし、それは単なるトリックであり、より良い解決策があるかもしれません。
c++ - QDoubleValidator は複数の小数点を受け入れます
に を使用しQDoubleValidator
ていQLineEdit
ます。アプリケーションのロケール (QtCreator で設定) はQLocale::German
.
これで、有効な double を入力すると (ドットまたはコンマを小数点記号として使用して)、textedit への書き込みと、文字列の float への変換が完全に正常に機能します。しかし、バリデーターを使用すると、複数の小数点記号を使用して何かを書くこともできます。文字列は like123.567,890
または,,03.4...
get 検証されますが、float に変換することはできません。
アルファベット文字のない文字列だけでなく、実数QDoubleValidator
のみを検証するように指示する方法はありますか?
私は基本的に、デフォルトのロケールまたはドイツ語のロケールを使用して浮動小数点数に変換できる、文字列のみを検証するバリデーターが必要です。
regex - QLineEdit: ユーザーがアスタリスク (*) を入力できないようにする方法は?
アプリケーションで QLineEdit を使用しています。ユーザーがテキストのどこにも「*」を入力できないようにしたい。QRegExpValidator を試しましたが、適切な正規表現を設定できませんでした。助けてください。
c++ - QValidator を使用した QLineEdit: 入力の有効性に関係なく、編集が終了したことに反応しますか?
QLineEdit
ユーザーが編集を終了したときに発行される信号QLineEdit::editingFinished
があります。たとえば、Enter キーを押すことによってです。ただし、バリデーターまたは入力マスクが設定されeditingFinished
ている場合は、入力が有効な場合にのみ発行されます。
しかし、入力の有効性に関係なく、編集を終了したユーザーにどのように反応できますか? 入る、戻る、ウィジェットがフォーカスを失っているなどを手動で確認する必要がありますか?
この理由: を使用して数値を編集するためのカスタム ウィジェットを作成したかったのQDoubleValidator
です。ユーザーが編集を終了し、入力が無効な場合 (間違った範囲、空のテキストなど)、有効なデフォルト値にリセットしたいと考えています。このようなもの: