Qt模块化笔记之Qt Widgets——抽象旋转框及其继承类

来源:互联网 发布:西工大编程 编辑:程序博客网 时间:2024/06/06 07:49

继承关系如下:

  • QAbstractSpinBox
    • QDateTimeEdit
      • QDateEdit
      • QTimeEdit
    • QDoubleSpinBox
    • QSpinBox
默认外观分别如下(win7,与上述顺序对应):


可看出,都是由一个可编辑的文本框及右端小箭头组成

————————————————————————————————————————————————————————————

QAbstractSpinBox

属性简单解释如下:

Properties

  • accelerated : bool加速
  • acceptableInput : const bool接受输入
  • alignment : Qt::Alignment对齐方式
  • buttonSymbols : ButtonSymbols右端按钮样式
  • correctionMode :纠正模式 CorrectionMode
  • frame : bool
  • keyboardTracking : bool按键追踪
  • readOnly : bool只读
  • specialValueText : QString特输值文本
  • text : const QString包括前后辍的文本框中文本
  • wrapping : bool首尾相接,循环
公有函数如下:

QAbstractSpinBox(QWidget * parent = 0)~QAbstractSpinBox()//下方为设置部分voidsetAccelerated(bool on)//设置加速开关,默认关。开启时,长按右端小箭头,值的增大速度由慢变快,适合值的大范围变化voidsetAlignment(Qt::Alignment flag)//对齐方式,默认左对齐,参数枚举型,有 Qt::AlignLeft, Qt::AlignRight, 和 Qt::AlignHCenter.voidsetButtonSymbols(ButtonSymbols bs)//右方上下箭头样式,默认图中的样式,也可以是加减号,可选枚举值见下方voidsetCorrectionMode(CorrectionMode cm)//纠正模式,用户输入非法字符时调用,有恢复前一值及取一个最接近的值,默认前者,枚举值见下方voidsetFrame(bool)voidsetKeyboardTracking(bool kt)//按键追踪,默认true,此时,当用户输入的值变化时,信号valueChanged()不断发出,false时,失去焦点或点击箭头时才发出voidsetReadOnly(bool r)//只读,不可编辑voidsetSpecialValueText(const QString & txt)//设置一个特殊值,经实验,当设置一个变化值0-100,变化时,当最后值为0时,却不显示0,而显示这个txt,用于让应用程序判断哪个值合适……voidsetWrapping(bool w)//设置循环,值增长到最大时,自动跳到最小值,返之亦然//下方为取值部分,与上述对应boolisAccelerated() constQt::Alignmentalignment() constButtonSymbolsbuttonSymbols() constCorrectionModecorrectionMode() constboolhasFrame() constboolkeyboardTracking() constboolisReadOnly() constQStringspecialValueText() constboolwrapping() const//其它功能QStringtext() const//取得文本框内所有字符boolhasAcceptableInput() constvoidinterpretText()virtual voidfixup(QString & input) constvirtual voidstepBy(int steps)virtual QValidator::Statevalidate(QString & input, int & pos) const//用于判断输入是否满足正则,用于被重载

按钮样式枚举值:enum QAbstractSpinBox::ButtonSymbols


QAbstractSpinBox::UpDownArrows0上下箭头QAbstractSpinBox::PlusMinus1+与-QAbstractSpinBox::NoButtons2不显示纠正模式枚举值:enum QAbstractSpinBox::CorrectionMode
ConstantValueDescriptionQAbstractSpinBox::CorrectToPreviousValue0恢复成上一值(默认)QAbstractSpinBox::CorrectToNearestValue1取一个最近值.————————————————————————————————————————————————————————————

QSpinBox 

与上述抽象类相对,多出了以下外观属性:

Properties

  • cleanText : const QString去除前后辍及空白字符后的文本
  • displayIntegerBase : int
  • maximum : int
  • minimum : int
  • prefix : QString前辍
  • singleStep : int单步步长
  • suffix : QString后辍
  • value : int当前值
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()voidsetMaximum(int max)//设置最大值voidsetMinimum(int min)voidsetPrefix(const QString & prefix)//加前辍,如让它显示 “值 10 元”,值即是前辍,元是后辍voidsetSuffix(const QString & suffix)//加后辍voidsetRange(int minimum, int maximum)//设置范围voidsetSingleStep(int val)//设步长,每点一次按钮改变的值(在原基础上加上或减去该值)voidsetDisplayIntegerBase(int base)intmaximum() constintminimum() constQStringprefix() constintsingleStep() constQStringsuffix() constintvalue() constQStringcleanText() constintdisplayIntegerBase() 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

voidsetValue(int val)

Signals

voidvalueChanged(int i)voidvalueChanged(const QString & text)上述两信号的不同在于前一个参数单单返回值,而后一个包括前后辍。

————————————————————————————————————————————————————————————

QDoubleSpinBox

其属性如下:

Properties

  • cleanText : const QString
  • decimals : int
  • maximum : double
  • minimum : double
  • prefix : QString
  • singleStep : double
  • suffix : QString
  • value : double
decimals意思为小数(位数),用于设置精度级别,默认两位小数。

公有函数如下:

Public FunctionsQDoubleSpinBox(QWidget * parent = 0)~QDoubleSpinBox()QStringcleanText() constintdecimals() constdoublemaximum() constdoubleminimum() constQStringprefix() constvoidsetDecimals(int prec)voidsetMaximum(double max)voidsetMinimum(double min)voidsetPrefix(const QString & prefix)voidsetRange(double minimum, double maximum)voidsetSingleStep(double val)voidsetSuffix(const QString & suffix)doublesingleStep() constQStringsuffix() constvirtual QStringtextFromValue(double value) constdoublevalue() constvirtual doublevalueFromText(const QString & text) const

Public Slots

voidsetValue(double val)

Signals

voidvalueChanged(double d)voidvalueChanged(const QString & text)都是说过的,只列出来好了。
————————————————————————————————————————————————————————————

QDateTimeEdit

它的文本框默认分为六个部分(sections),“2000/1/1 0:00:00”,即“年/月/日  时:分:秒”六部分。

各部分枚举值

enum QDateTimeEdit::Section
flags QDateTimeEdit::Sections

ConstantValueQDateTimeEdit::NoSection0x0000QDateTimeEdit::AmPmSection上午Am或下午Pm0x0001QDateTimeEdit::MSecSection毫秒0x0002QDateTimeEdit::SecondSection0x0004QDateTimeEdit::MinuteSection0x0008QDateTimeEdit::HourSection0x0010QDateTimeEdit::DaySection0x0100QDateTimeEdit::MonthSection0x0200QDateTimeEdit::YearSection0x0400

属性如下:

  • calendarPopup : bool 弹出一个日历选择日期
  • currentSection : Section当前光标所属部分,如属日期的”年“部分
  • currentSectionIndex : int当前部分的索引
  • date : QDate
  • dateTime : QDateTime
  • displayFormat : QString显示格式
  • displayedSections : const Sections
  • maximumDate : QDate
  • maximumDateTime : QDateTime
  • maximumTime : QTime
  • minimumDate : QDate
  • minimumDateTime : QDateTime
  • minimumTime : QTime
  • sectionCount : const int
  • time : QTime
  • timeSpec : Qt::TimeSpec具体时间种类time specific,见下方枚举值2

Public FunctionsQDateTimeEdit(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()voidsetCalendarPopup(bool enable)//设置一个下拉列表式的日历选择小部件,如下图1voidsetCalendarWidget(QCalendarWidget * calendarWidget)//可用这个加入一个自定义的日历voidsetCurrentSection(Section section)//将光标转移到某一部分,用以改变该值voidsetCurrentSectionIndex(int index)//与上述功能相同,通过索引时,第一部分索引值为0voidsetDateRange(const QDate & min, const QDate & max)//设置日期范围voidsetTimeRange(const QTime & min, const QTime & max)//设置时间范围voidsetDateTimeRange(const QDateTime & min, const QDateTime & max)//同时设置以上两种voidsetMaximumDate(const QDate & max)//设置最大日期,设置范围了,就不需要了voidsetMaximumDateTime(const QDateTime & dt)voidsetMaximumTime(const QTime & max)voidsetMinimumDate(const QDate & min)voidsetMinimumDateTime(const QDateTime & dt)voidsetMinimumTime(const QTime & min)voidsetDisplayFormat(const QString & format)//设置显示格式,见下方说明3voidsetSelectedSection(Section section)voidsetTimeSpec(Qt::TimeSpec spec)voidclearMaximumDate()//清除……voidclearMaximumDateTime()voidclearMaximumTime()voidclearMinimumDate()voidclearMinimumDateTime()voidclearMinimumTime()boolcalendarPopup() constQCalendarWidget *calendarWidget() constSectioncurrentSection() constintcurrentSectionIndex() constQDatedate() constQTimetime() constQDateTimedateTime() constQStringdisplayFormat() constQDatemaximumDate() constQDateTimemaximumDateTime() constQTimemaximumTime() constQDateminimumDate() constQDateTimeminimumDateTime() constQTimeminimumTime() constSectionsdisplayedSections() constSectionsectionAt(int index) constintsectionCount() constQStringsectionText(Section section) constQt::TimeSpectimeSpec() const


1,setCalendarPopup(true);效果,右方箭头也变成下拉列表框(默认是没有弹出来的……)



2,enum Qt::TimeSpec

ConstantValueDescriptionQt::LocalTime0Locale dependent time (Timezones and Daylight Savings Time).Qt::UTC1协调世界时,又称世界统一时间,世界标准时间,国际协调时间,简称UTC。Qt::OffsetFromUTC2An offset in seconds from Coordinated Universal Time.Qt::TimeZone3A named time zone using a specific set of Daylight Savings rules.3,displayFormat 控件文本框内日期时间的显示格式,例如默认的格式可以这样描述 "yyyy/MM/dd hh:mm:ss",从而显示为上图中的那样,用一些特殊的字符代表日期时间的各部分,具体见点击打开链接

槽与信号比较简单,以为只列出:

Public Slots

voidsetDate(const QDate & date)voidsetDateTime(const QDateTime & dateTime)voidsetTime(const QTime & time)

Signals

voiddateChanged(const QDate & date)voiddateTimeChanged(const QDateTime & datetime)voidtimeChanged(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的样子。

似乎这两个有点多余

0 0
原创粉丝点击