Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QIntValidator返回有效输入中的中间值_C++_Qt_Qvalidator - Fatal编程技术网

C++ QIntValidator返回有效输入中的中间值

C++ QIntValidator返回有效输入中的中间值,c++,qt,qvalidator,C++,Qt,Qvalidator,我有一个QIntValidator(int-min,int-max,QWidget*parent)设置,但它返回QValidator::Intermediate,输入值介于min和max之间(即有效) 我用这个QIntValidator检查输入,一个整数,是否在最小值和最大值之间。否则,将丢弃输入,将编辑器返回到其以前的值 假设最小值为1,最大值为2147483648。例如,如果用户输入数字3,则返回QValidator::Intermediate。这似乎是一种奇怪的行为。你知道为什么会这样吗

我有一个
QIntValidator(int-min,int-max,QWidget*parent)
设置,但它返回
QValidator::Intermediate
,输入值介于min和max之间(即有效)

我用这个QIntValidator检查输入,一个整数,是否在最小值和最大值之间。否则,将丢弃输入,将编辑器返回到其以前的值

假设最小值为1,最大值为2147483648。例如,如果用户输入数字3,则返回QValidator::Intermediate。这似乎是一种奇怪的行为。你知道为什么会这样吗

QLineEdit *lnEdt = reinterpret_cast<QLineEdit*>(item);
QString valData = lnEdt->text(); // "3"
int nRow = ui->listWidget->currentRow();

if(editor == QVariant::Int) //the type of input, in this case, it's true
{
    qDebug() << minimum; //1
    qDebug() << maximum; //2147483648
    QValidator *validator = new QIntValidator(minimum.toInt(), maximum.toInt());
    int pos = 0;
    qDebug() << validator->validate(valData, pos); // QValidator::Intermediate
    if(validator->validate(valData, pos) != QValidator::Acceptable)
    //it falls in this condition, rejecting the input 
    //and setting the editor text to its previous value.
        ui->listWidget->item(nRow)->setText(currentSelectedValue);
}
QLineEdit*lnEdt=reinterpret\u cast(项目);
QString valData=lnEdt->text();//"3"
int nRow=ui->listWidget->currentRow();
if(editor==QVariant::Int)//输入的类型,在本例中为true
{
qDebug()listWidget->item(nRow)->setText(currentSelectedValue);
}

说这是预期行为(输入的长度小于最大长度)。

好的,你有问题吗?对不起,我被“引导式”问题困扰得忘了最重要的问题。不管怎么说,这似乎是一种奇怪的行为,我希望您能思考一下为什么验证器拒绝有效的输入。您完全正确。一份我看不见的小而重要的文件。非常感谢。“由等于或小于最大值的数字组成的值被视为中间值。这是因为阻止数字在范围内的数字不一定是最后键入的数字。这也意味着中间数可以有前导零。”