Projektitiedosto
{code}
TEMPLATE = app
HEADERS = hexspinbox.h
SOURCES = hexspinbox.cpp \
main.cpp
{code}
Otsikkotiedosto
{code}
#ifndef HEXSPINBOX_H
#define HEXSPINBOX_H
#include <QSpinBox>
class QRegExpValidator;//luokan etukateisesittely ettei kaantaja anna virhetta
//tehdaan oma HexSpinBox luokka ja peritaan se Qt:n QSpinBoxista
class HexSpinBox : public QSpinBox
{
Q_OBJECT
public:
HexSpinBox(QWidget *parent = 0);
protected:
QValidator::State validate(QString &text, int &pos) const;
int valueFromText(const QString &text) const;
QString textFromValue(int value) const;
private:
QRegExpValidator *validator;
};
#endif
{code}
Luokan toteutus
{code}
#include <QtGui>
#include "hexspinbox.h"
HexSpinBox::HexSpinBox(QWidget *parent)
: QSpinBox(parent)
{
setRange(0, 255);
validator = new QRegExpValidator(QRegExp("[0-9A-Fa-f]{1,8}"), this);
}
QValidator::State HexSpinBox::validate(QString &text, int &pos) const
{
return validator->validate(text, pos);
}
int HexSpinBox::valueFromText(const QString &text) const
{
bool ok;
return text.toInt(&ok, 16);
}
QString HexSpinBox::textFromValue(int value) const
{
return QString::number(value, 16).toUpper();
}
{code}
Pääohjelma
{code}
#include <QApplication>
#include <QHBoxLayout>
#include "hexspinbox.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
HexSpinBox spinBox;
spinBox.setWindowTitle(QObject::tr("Hex Spin Box"));
spinBox.show();
return app.exec();
}
{code} |