默认外观分别如下(win7,与上述顺序对应):
可看出,都是由一个可编辑的文本框及右端小箭头组成
QAbstractSpinBox
属性简单解释如下:
Properties
|
|
公有函数如下:
QAbstractSpinBox(QWidget * parent = 0) ~QAbstractSpinBox() //下方为设置部分 void setAccelerated(bool on)//设置加速开关,默认关。开启时,长按右端小箭头,值的增大速度由慢变快,适合值的大范围变化 void setAlignment(Qt::Alignment flag)//对齐方式,默认左对齐,参数枚举型,有 Qt::AlignLeft, Qt::AlignRight, 和 Qt::AlignHCenter. void setButtonSymbols(ButtonSymbols bs)//右方上下箭头样式,默认图中的样式,也可以是加减号,可选枚举值见下方 void setCorrectionMode(CorrectionMode cm)//纠正模式,用户输入非法字符时调用,有恢复前一值及取一个最接近的值,默认前者,枚举值见下方 void setFrame(bool) void setKeyboardTracking(bool kt)//按键追踪,默认true,此时,当用户输入的值变化时,信号valueChanged()不断发出,false时,失去焦点或点击箭头时才发出 void setReadOnly(bool r)//只读,不可编辑 void setSpecialValueText(const QString & txt)//设置一个特殊值,经实验,当设置一个变化值0-100,变化时,当最后值为0时,却不显示0,而显示这个txt,用于让应用程序判断哪个值合适…… void setWrapping(bool w)//设置循环,值增长到最大时,自动跳到最小值,返之亦然 //下方为取值部分,与上述对应 bool isAccelerated() const Qt::Alignment alignment() const ButtonSymbols buttonSymbols() const CorrectionMode correctionMode() const bool hasFrame() const bool keyboardTracking() const bool isReadOnly() const QString specialValueText() const bool wrapping() const //其它功能 QString text() const//取得文本框内所有字符 bool hasAcceptableInput() const void interpretText() virtual void fixup(QString & input) const virtual void stepBy(int steps) virtual QValidator::State validate(QString & input, int & pos) const//用于判断输入是否满足正则,用于被重载
按钮样式枚举值:enum QAbstractSpinBox::ButtonSymbols
QAbstractSpinBox::UpDownArrows | 0 | 上下箭头 |
QAbstractSpinBox::PlusMinus | 1 | +与- |
QAbstractSpinBox::NoButtons | 2 | 不显示 |
纠正模式枚举值:enum QAbstractSpinBox::CorrectionMode
Constant | Value | Description |
---|---|---|
QAbstractSpinBox::CorrectToPreviousValue | 0 | 恢复成上一值(默认) |
QAbstractSpinBox::CorrectToNearestValue | 1 | 取一个最近值. |
————————————————————————————————————————————————————————————
QSpinBox
与上述抽象类相对,多出了以下外观属性:
Properties
|
|
displayIntegerBase比较特殊,用于改变基本显示字符。它默认值为10,即我们常用的数字0-9,这时,值变化和我们常用的数字无差别。如果设置这个值成13,则进入旋转的基本字符除0-9外,增加了a,b,c,共13个,这样,值的变化为:0,1,2,3,4,5,6,7,8,9,1a,1b,1c,10,11……19,2a,2b,2c,20,21………
少于10时,如设置成3时,就成:0,1,2,10,11,12……
公有函数如下:
QSpinBox(QWidget * parent = 0) ~QSpinBox() void setMaximum(int max)//设置最大值 void setMinimum(int min) void setPrefix(const QString & prefix)//加前辍,如让它显示 “值 10 元”,值即是前辍,元是后辍 void setSuffix(const QString & suffix)//加后辍 void setRange(int minimum, int maximum)//设置范围 void setSingleStep(int val)//设步长,每点一次按钮改变的值(在原基础上加上或减去该值) void setDisplayIntegerBase(int base) int maximum() const int minimum() const QString prefix() const int singleStep() const QString suffix() const int value() const QString cleanText() const int displayIntegerBase() const
示例代码如下:
ui->spinBox->setRange(10,30); ui->spinBox->setSingleStep(5); ui->spinBox->setPrefix("值"); ui->spinBox->setSuffix("元"); qDebug()<<"value()返回值:"<<ui->spinBox->value(); qDebug()<<"cleanText()返回值:"<<ui->spinBox->cleanText();
输出:
value()返回值: 10
cleanText()返回值: "10"
返回值的类型不同
Public Slots
void | setValue(int val) |
Signals
void | valueChanged(int i) |
void | valueChanged(const QString & text) |
上述两信号的不同在于前一个参数单单返回值,而后一个包括前后辍。
————————————————————————————————————————————————————————————
QDoubleSpinBox
其属性如下:
Properties
|
decimals意思为小数(位数),用于设置精度级别,默认两位小数。
公有函数如下:
Public Functions QDoubleSpinBox(QWidget * parent = 0) ~QDoubleSpinBox() QString cleanText() const int decimals() const double maximum() const double minimum() const QString prefix() const void setDecimals(int prec) void setMaximum(double max) void setMinimum(double min) void setPrefix(const QString & prefix) void setRange(double minimum, double maximum) void setSingleStep(double val) void setSuffix(const QString & suffix) double singleStep() const QString suffix() const virtual QString textFromValue(double value) const double value() const virtual double valueFromText(const QString & text) const
Public Slots
void | setValue(double val) |
Signals
void | valueChanged(double d) |
void | valueChanged(const QString & text) |
都是说过的,只列出来好了。
————————————————————————————————————————————————————————————
QDateTimeEdit
它的文本框默认分为六个部分(sections),“2000/1/1 0:00:00”,即“年/月/日 时:分:秒”六部分。
各部分枚举值
enum QDateTimeEdit::Section
flags QDateTimeEdit::Sections
Constant | Value |
---|---|
QDateTimeEdit::NoSection无 | 0x0000 |
QDateTimeEdit::AmPmSection上午Am或下午Pm | 0x0001 |
QDateTimeEdit::MSecSection毫秒 | 0x0002 |
QDateTimeEdit::SecondSection秒 | 0x0004 |
QDateTimeEdit::MinuteSection分 | 0x0008 |
QDateTimeEdit::HourSection时 | 0x0010 |
QDateTimeEdit::DaySection日 | 0x0100 |
QDateTimeEdit::MonthSection月 | 0x0200 |
QDateTimeEdit::YearSection年 | 0x0400 |
属性如下:
|
|
Public Functions QDateTimeEdit(QWidget * parent = 0) QDateTimeEdit(const QDateTime & datetime, QWidget * parent = 0) QDateTimeEdit(const QDate & date, QWidget * parent = 0) QDateTimeEdit(const QTime & time, QWidget * parent = 0) ~QDateTimeEdit() void setCalendarPopup(bool enable)//设置一个下拉列表式的日历选择小部件,如下图1 void setCalendarWidget(QCalendarWidget * calendarWidget)//可用这个加入一个自定义的日历 void setCurrentSection(Section section)//将光标转移到某一部分,用以改变该值 void setCurrentSectionIndex(int index)//与上述功能相同,通过索引时,第一部分索引值为0 void setDateRange(const QDate & min, const QDate & max)//设置日期范围 void setTimeRange(const QTime & min, const QTime & max)//设置时间范围 void setDateTimeRange(const QDateTime & min, const QDateTime & max)//同时设置以上两种 void setMaximumDate(const QDate & max)//设置最大日期,设置范围了,就不需要了 void setMaximumDateTime(const QDateTime & dt) void setMaximumTime(const QTime & max) void setMinimumDate(const QDate & min) void setMinimumDateTime(const QDateTime & dt) void setMinimumTime(const QTime & min) void setDisplayFormat(const QString & format)//设置显示格式,见下方说明3 void setSelectedSection(Section section) void setTimeSpec(Qt::TimeSpec spec) void clearMaximumDate()//清除…… void clearMaximumDateTime() void clearMaximumTime() void clearMinimumDate() void clearMinimumDateTime() void clearMinimumTime() bool calendarPopup() const QCalendarWidget * calendarWidget() const Section currentSection() const int currentSectionIndex() const QDate date() const QTime time() const QDateTime dateTime() const QString displayFormat() const QDate maximumDate() const QDateTime maximumDateTime() const QTime maximumTime() const QDate minimumDate() const QDateTime minimumDateTime() const QTime minimumTime() const Sections displayedSections() const Section sectionAt(int index) const int sectionCount() const QString sectionText(Section section) const Qt::TimeSpec timeSpec() const
1,setCalendarPopup(true);效果,右方箭头也变成下拉列表框(默认是没有弹出来的……)
2,enum Qt::TimeSpec
Constant | Value | Description |
---|---|---|
Qt::LocalTime | 0 | Locale dependent time (Timezones and Daylight Savings Time). |
Qt::UTC | 1 | 协调世界时,又称世界统一时间,世界标准时间,国际协调时间,简称UTC。 |
Qt::OffsetFromUTC | 2 | An offset in seconds from Coordinated Universal Time. |
Qt::TimeZone | 3 | A named time zone using a specific set of Daylight Savings rules. |
3,displayFormat 控件文本框内日期时间的显示格式,例如默认的格式可以这样描述 "yyyy/MM/dd hh:mm:ss",从而显示为上图中的那样,用一些特殊的字符代表日期时间的各部分,具体见点击打开链接
槽与信号比较简单,以为只列出:
Public Slots
void | setDate(const QDate & date) |
void | setDateTime(const QDateTime & dateTime) |
void | setTime(const QTime & time) |
Signals
void | dateChanged(const QDate & date) |
void | dateTimeChanged(const QDateTime & datetime) |
void | timeChanged(const QTime & time) |
———————————————————————————————————————————————————————————
QDateEdit与QTimeEdit
都继承自QDateTimeEdit
查看它们的函数
QDateEdit:
Public Functions
QDateEdit(QWidget * parent = 0) | |
QDateEdit(const QDate & date, QWidget * parent = 0) | |
~QDateEdit() |
QTimeEdit:
Public Functions
QTimeEdit(QWidget * parent = 0) | |
QTimeEdit(const QTime & time, QWidget * parent = 0) | |
~QTimeEdit() |
除上面的构造函数外,就没有其它函数了,继承除外。
这样,QDateEdit与QTimeEdit可认为QDateTimeEdit通过setDisplayFormat(const QString & format)函数设置格式后产生的便捷部件。
事实上,QDateEdit与QTimeEdit也可以能过继承来的setDisplayFormat()函数设置成QDateTimeEdit的样子。