赞
踩
根据C++GUI Qt4编程(第二版)
本程序实现一个十六进制微调窗并演示
hexspinbox.h文件
- #ifndef HEXSPINBOX_H
- #define HEXSPINBOX_H
-
- #include <QSpinBox>
- class QRegExpValidator;
-
- class HexSpinBox : public QSpinBox
- {
- Q_OBJECT
- public:
- explicit HexSpinBox(QWidget *parent = 0);
- protected:
- QValidator::State validate(QString &input, int &pos) const;
- int valueFromText(const QString &text) const;
- QString textFromValue(int val) const;
- private:
- QRegExpValidator*validator;
- };
-
- #endif // HEXSPINBOX_H
- #include "hexspinbox.h"
- #include <QtGui>
- #include <QRegExpValidator>
-
- 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 &input, int &pos) const
- {
- return validator->validate(input,pos);
- }
-
- int HexSpinBox::valueFromText(const QString &text) const
- {
- bool ok;
- return text.toInt(&ok,16);
- }
-
- QString HexSpinBox::textFromValue(int val) const
- {
- return QString::number(val,16).toUpper();
- }
然后就可以使用这个十六进制部件,在一个QDialog放置自定义的HexSpinBox,再放一个QLabel显示它对应的十进制。
dialog.h
- #ifndef DIALOG_H
- #define DIALOG_H
-
- #include <QDialog>
- #include <hexspinbox.h>
- class QLabel;
- class Dialog : public QDialog
- {
- Q_OBJECT
- public:
- explicit Dialog(QWidget *parent = 0);
- private:
- QLabel *lb;
- HexSpinBox *hexSpinBox;
- private slots:
- void showValue(int val);
- };
-
- #endif // DIALOG_H
- #include "dialog.h"
- #include <QtGui>
-
- Dialog::Dialog(QWidget *parent) :
- QDialog(parent)
- {
- QHBoxLayout *hBoxLayout = new QHBoxLayout;
- hexSpinBox=new HexSpinBox;
- lb = new QLabel;
- hBoxLayout->addWidget(hexSpinBox);
- hBoxLayout->addWidget(lb);
-
- setLayout(hBoxLayout);
- connect(hexSpinBox,SIGNAL(valueChanged(int)),this,SLOT(showValue(int)));
- }
-
- void Dialog::showValue(int val)
- {
- lb->setText(QString::number(val,10));
- }
-
主函数:
- #include <QApplication>
- #include <dialog.h>
-
- int main(int argc,char*argv[])
- {
- QApplication app(argc,argv);
- Dialog *dlg = new Dialog;
- dlg->show();
- return app.exec();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。