Projektitiedosto
TEMPLATE = app HEADERS = hexspinbox.h SOURCES = hexspinbox.cpp \ main.cpp
Otsikkotiedosto
#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
Luokan toteutus
#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(); }
Pääohjelma
#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(); }