核心内容就是重写QDoubleSpinBox的
QValidator::State validate(QString & text, int & pos) const;
创建一个继承QDoubleSpinBox类MyQDoubleSpinBox
头文件:
#ifndef MYQDOUBLESPINBOX_H
#define MYQDOUBLESPINBOX_H
#include <QObject>
#include <QWidget>
#include <QValidator>
#include <QDoubleSpinBox>
class MyQDoubleSpinBox : public QDoubleSpinBox
{
public:
MyQDoubleSpinBox(QWidget *parent = 0);
protected:
QValidator::State validate(QString & text, int & pos) const;
public:
QRegExpValidator *validator;
};
#endif // MYQDOUBLESPINBOX_H
cpp文件
#include "MyQDoubleSpinBox.h"
#include <QDebug>
MyQDoubleSpinBox::MyQDoubleSpinBox(QWidget *parent):QDoubleSpinBox(parent)
{
//正则表达
QRegExp rx("^-?(90|[0-8]?\\d(\\.(25|50|75|0|00))?)$");
validator = new QRegExpValidator(rx, this);
//以下内容和常规操作无疑
this->setMinimum(0);
this->setMaximum(90);
this->setDecimals(2);
this->setSingleStep(0.25);
}
QValidator::State MyQDoubleSpinBox::validate(QString &text, int &pos) const
{
return validator->validate(text, pos);
}
随便UI创建个doublespinbox 提升一下即可