16,223
社区成员
发帖
与我相关
我的任务
分享
#ifndef VALIDATOR_H
#define VALIDATOR_H
#include <QWidget>
#include <QtGui>
#include <QIntValidator>
#include <QDoubleValidator>
class Validator : public QWidget
{
Q_OBJECT
private:
int m_int;
double m_double;
QLineEdit *intEdit;
QLineEdit *doubleEdit;
QIntValidator *intVal;
QDoubleValidator *douVal;
public:
explicit Validator(QWidget *parent = 0);
signals:
public slots:
void nodify();
};
#endif // VALIDATOR_H
#include "validator.h"
#include <QHBoxLayout>
Validator::Validator(QWidget *parent) :
QWidget(parent)
{
intVal = new QIntValidator(100, 200, this);
intEdit = new QLineEdit(this);
doubleEdit = new QLineEdit;
douVal = new QDoubleValidator;
intEdit->setValidator(intVal);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(intEdit);
layout->addWidget(doubleEdit);
this->setLayout(layout);
//无效
connect(intEdit, SIGNAL(editingFinished()), this, SLOT(nodify()));
connect(intEdit, SIGNAL(returnPressed()), this, SLOT(nodify()));
}
void Validator::nodify()
{
int n = (intEdit->text()).toInt();
if(n < 100 )
n = 100;
intEdit->setText(QString("%1").arg(n));
}
class MyValidator : public QIntValidator
{
Q_OBJECT
public:
explicit MyValidator(QObject * parent = 0):QIntValidator(parent)
{
}
MyValidator(int bottom, int top, QObject * parent):QIntValidator(bottom, top, parent)
{
}
virtual void setRange(int bottom, int top)
{
QIntValidator::setRange(bottom, top);
}
~MyValidator()
{
}
virtual State validate(QString &s, int &n) const
{
return QIntValidator::validate(s, n);
}
virtual void fixup(QString &s) const
{
s = QString("%1").arg(bottom());
}
};