8

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

 QDoubleValidator *haha= new QDoubleValidator(this);
 haha->setBottom(0.00);
 haha->setDecimals(2);
 haha->setTop(100.00); 
 get_line_edit()->setValidator(haha);

また

 QDoubleValidator *haha= new QDoubleValidator(0.00,100.00,2,this);

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

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

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

4

7 に答える 7

10

これにつまずいたところです。QDoubleValidator 表記を次のように設定してみてください。

doubleValidator->setNotation(QDoubleValidator::StandardNotation);
于 2014-10-10T19:19:50.043 に答える
5

バリデーターのドキュメントによると、入力が任意の double であるが範囲外の場合、「validate」から「Intermediate」が返されます。

行編集コントロールを使用して (たとえば、"returnPressed" シグナルを発行することにより)、ユーザーが送信したい中間入力と最終入力を区別する必要があります。ユーザーが「10000」と入力した場合、ユーザーはこの入力の前に「0.」を付けることができるため、これは 0 から 100 までの数値の有効な中間入力です。

于 2012-04-12T09:08:01.950 に答える
1

バリデーターに表記を設定する必要があります

QLineEdit *firstX;
QDoubleValidator* validFirstX = new QDoubleValidator(-1000, 1000, 3, ui.firstX); 
validFirstX->setNotation(QDoubleValidator::StandardNotation);

それは機能しますが、完全には正しくありません。興味深いのは、数字自体ではなく桁数を制御することです。たとえば、この例では、QLineEdit に 1000 または 9999 を入力できます。

于 2015-06-19T04:46:00.760 に答える
0

この例は4.8で正常に機能します。4.2以降に変更されたようには見えないので、問題はQLineEditの作成方法にあると思われます。これは、その例の関連コードです。

QLineEdit* validatorLineEdit;
validatorLineEdit = new QLineEdit;
validatorLineEdit->setValidator( new QDoubleValidator(-999.0, 999.0, 2, validatorLineEdit));

ラインエディットをどのように作成しましたか?

于 2012-04-12T07:56:36.570 に答える
0

明確にするために、使用しますQDoubleValidator::setNotation(QDoubleValidator::StandardNotation)

例:

QDoubleValidator* doubleValidator = new QDoubleValidator(-999.0, 999.0, 2, validatorLineEdit);
doubleValidator->setNotation(QDoubleValidator::StandardNotation);
validatorLineEdit->setValidator(doubleValidator);
于 2014-10-22T13:02:35.417 に答える