use*_*013 5 c++ validation qt qvalidator
我正在尝试在Qt 4.2中的行编辑框中应用验证器,但它无法正常工作:
QDoubleValidator *haha= new QDoubleValidator(this);
haha->setBottom(0.00);
haha->setDecimals(2);
haha->setTop(100.00);
get_line_edit()->setValidator(haha);
Run Code Online (Sandbox Code Playgroud)
要么
QDoubleValidator *haha= new QDoubleValidator(0.00,100.00,2,this);
Run Code Online (Sandbox Code Playgroud)
无论如何,我仍然可以进入我想要的任何价值.
但是,如果我切换到QIntValidator
它,它的工作原理!
所以我去谷歌并进行了一些搜索,很多人过去常常遇到同样的问题.这是一个错误吗?或者应该有其他一些我应该做的设置?
刚刚绊倒了这一个.尝试将QDoubleValidator表示法设置为:
doubleValidator->setNotation(QDoubleValidator::StandardNotation);
Run Code Online (Sandbox Code Playgroud)
验证器文档说当输入是任意双倍但超出范围时,它从"validate"返回"Intermediate".
您需要通过使用行编辑控件(例如,通过发出"returnPressed"信号)来区分中间输入和用户想要提交的最终输入.如果用户键入"10000"仍然是0到100之间的数字的有效中间输入,因为用户可以在此输入前加"0".
这个例子在 4.8 中运行良好。它看起来自 4.2 以来没有改变,所以我怀疑问题在于你如何创建 QLineEdit。这是该示例中的相关代码。
QLineEdit* validatorLineEdit;
validatorLineEdit = new QLineEdit;
validatorLineEdit->setValidator( new QDoubleValidator(-999.0, 999.0, 2, validatorLineEdit));
Run Code Online (Sandbox Code Playgroud)
您是如何创建线路编辑的?