Qt之彻底解决QSpinBox限定范围无效的问题

QSpinBox有个比较啃爹的问题,不管取值范围设置为多少,都能一直输入0,如下图所示:

Qt之彻底解决QSpinBox限定范围无效的问题_第1张图片
当取值范围包含负数时,负号后也可以一直输入0,如下图所示:

Qt之彻底解决QSpinBox限定范围无效的问题_第2张图片
还有就是当取值范围设置为10以上时,比如10~100,却可以输入1~9
虽然上述非法输入最终都未生效,当QSpinBox失去焦点时会显示为正常值,但是给人的体验很不好。下面将重写QSpinBox的数据校验方法validate来解决此问题。

QHSpinBox.h

#ifndef QHSPINBOX_H
#define QHSPINBOX_H

#include 

class QHSpinBox : public QSpinBox
{
public:
    explicit QHSpinBox(QWidget *parent = nullptr);
    QValidator::State validate(QString &input, int &pos) const override;
};

#endif // QHSPINBOX_H

QHSpinBox.cpp

#include "QHSpinBox.h"

QH

你可能感兴趣的:(Qt工作笔记,qt,自定义QSpinBox,QIntValidator,validate,QValidator)