Qt Widgets——抽象旋轉框及其繼承類


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM