默認外觀分別如下(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的樣子。
