Qt之QSpinBox,QDoubleSpinBox及自定义QSpinBox

来源:互联网 发布:获取网页局部源码 编辑:程序博客网 时间:2024/06/04 19:34

// QSpinBox
// setRange() //设置范围
// setMaximum() //设置最大值
// setMinimum() //设置最小值
// setSingleSetp(int val) //设置singlesetp为val
// setPrefix() //设置后缀
// setWrapping() //数值可循环
// slots void setValue() //设置value
// singals valueChanged(int) valueChanged(QString)//值发生改变
// setSpecialValueText() //当数值超值范围时显示的特殊文本
// QDoubleSpinBox setDecimals()//设置显示精度

public slots:    void is_change(const int& value);private:    MySpinBox *mb;
class MySpinBox:public QSpinBox{    Q_OBJECTpublic:    explicit MySpinBox(QWidget* parent = 0):QSpinBox(parent){}protected:    virtual int valueFromText(const QString& text)const Q_DECL_OVERRIDE    {        QRegExp regexp(tr("(\\d+)(\\s*[x]\\s*\\d+)?"));        if(regexp.exactMatch(text))            return regexp.cap(1).toInt();        else            return 0;    }    virtual QString textFromValue(int value)const Q_DECL_OVERRIDE    {        return tr("%1 x %1").arg(value);    }};
#include "widget.h"#include <QSpinBox>#include <QDoubleSpinBox>#include "MySpinBox.h"#include <QDebug>// QSpinBox// setRange() //设置范围// setMaximum() //设置最大值// setMinimum() //设置最小值// setSingleSetp(int val) //设置singlesetp为val// setPrefix() //设置后缀// setWrapping() //数值可循环// slots void setValue() //设置value// singals valueChanged(int) valueChanged(QString)//值发生改变// setSpecialValueText() //当数值超值范围时显示的特殊文本//  QDoubleSpinBox setDecimals()Widget::Widget(QWidget *parent)    : QWidget(parent){    resize(600,600);    QSpinBox *sb = new QSpinBox(this);    sb->move(100,100);    QDoubleSpinBox *dsb = new QDoubleSpinBox(this);    dsb->move(100,150);    sb->setRange(2,20);    sb->setSingleStep(2);    sb->setPrefix("$");    sb->setSuffix("元");    sb->resize(70,30);    sb->setWrapping(true);    sb->setSpecialValueText("Auto-Value");    mb = new MySpinBox(this);    mb->move(100,200);    void (MySpinBox::*pf)(int) = &MySpinBox::valueChanged;    QObject::connect(mb,pf,this,&Widget::is_change);    dsb->setSuffix("$");    dsb->setDecimals(4);    dsb->setSingleStep(0.005);}void Widget::is_change(const int& value){    qDebug() << "value changed to " << value << endl;}

效果:
这里写图片描述