2

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

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

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

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

4

2 に答える 2

4

これまでに を使用したことはありませんが、 を使用してQDoubleValidatorそのような動作を実現できましたQRegExpValidator

QRegExpValidator* rxv = new QRegExpValidator(QRegExp("[+-]?\\d*[\\.,]?\\d+"), this);
lineedit->setValidator(rxv);
于 2014-10-30T12:07:53.083 に答える
2

QRegExpValidatorコンテンツを float に変換するだけで、ロケール指定が不要な場合は、 next deepを使用できますregexp

ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?")));
于 2014-10-30T12:09:14.433 に答える