QRangeControl类

Qt 3.0.5

主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QRangeControl类参考

QRangeControl类提供了一个范围内的一个整数值。 详情请见……

#include <qrangecontrol.h>

QDialQScrollBarQSliderQSpinBox继承。

所有成员函数的列表。

公有成员

保护成员


详细描述

QRangeControl类提供了一个范围内的一个整数值。

尽管QRangeControl最初始是为了QScrollBar窗口部件而设计的,但它也可以和像QSliderQSpinBox这样的其它窗口部件关联使用。这里是这个类中五个主要概念:

  1. 当前值。这是QRangeControl所维护的一个有限制的整数。value()返回这个值,并且可以通过包括setValue()的几个函数来设置它。

  2. 最小值。这是value()可以返回的最小值。minValue()可以返回这个值,并且可以通过setRange()或构造函数来设置它。

  3. 最大值。这是value()可以返回的最大值。maxValue()可以返回这个值,并且可以通过setRange()或构造函数来设置它。

  4. 线步。这是QRangeControl所提供的比较小的两个自然步的差并且通常与用户按下方向键进行关联。线步可以由lineStep()返回并且可以使用setSteps()来设置。addLine()和subtractLine()这两个函数分别地用来给当前值增加或减少lineStep()。

  5. 页步。这是QRangeControl所提供的比较大的两个自然步的差并且通常与用户按下PageUp或PageDown进行关联。页步可以由pageStep()返回并且可以使用setSteps()来设置。addPage()和substractPage()这两个函数分别地用来给当前值增加或减少pageStep()。

单位(1)可以被看做事第三种步长。setValue()可以让你设置当前值为允许范围内的任何一个整数,对于n这一整数值,而不仅仅是minValue() + n * lineStep()。一些窗口部件也允许用户设置为任意值,而其它的也许只提供了lineStep()或pageStep()的倍数。

QRangeControl提供了适用于在屏幕上表示范围控制的更新和信号的发射的三个虚函数,叫做valueChange()、rangeChange()和stepChange()。

QRangeControl也提供了一个叫做bound()的函数,它可以强制任意整数变为这个范围控制所允许的范围中。

我们建议所有继承QRangeControl的窗口部件都至少提供一个叫做valueChanged()的信号,一些窗口部件也许需要提供addStep()、addPage()、substractStep()和substractPage()做为槽。

注意如果你计划实现一个使用QRangeControl的窗口部件,你不得不使用多重继承,因为QRangeControl并不是继承于QWidget的。

也可以参考杂项类


成员函数文档

QRangeControl::QRangeControl ()

构造一个最小值为0、最大值为99、线步为1、页步为10并且初始值为0的范围控制。

QRangeControl::QRangeControl ( int minValue, int maxValue, int lineStep, int pageStep, int value )

构造一个最小值为minValue、最大值为maxValue、线步为lineStep、页步为pageStep并且初始值为value(已经使用bound()被保证在允许范围内)的范围控制。

QRangeControl::~QRangeControl () [虚]

销毁这个范围控制。

void QRangeControl::addLine ()

setValue( value() + lineStep() )相同。

如果值发生改变,那么valueChange()被调用。

也可以参考subtractLine()、addPage()和setValue()。

void QRangeControl::addPage ()

setValue( value() + pageStep() )相同。

如果值发生改变,那么valueChange()被调用。

也可以参考subtractPage()、addLine()和setValue()。

int QRangeControl::bound ( int v ) const

强制值v进入从minValue()到maxValue()所确定的范围内,并且返回结果。

这个函数的提供可以让你很容易地强制转换其它数值而不是value()进入允许范围。你不需要为了QRangeControl本身而调用它。

也可以参考setValue()、value()、minValue()和maxValue()。

void QRangeControl::directSetValue ( int value ) [保护]

不调用valueChange()而直接设置范围控制的值为value

强制新value进入合法范围。

你将很少用到这个函数。可是,如果你想在valueChange()的重载函数中改变范围控制的值,而setValue()将会再次调用valueChange(),这时你就必须使用directSetValue()来替代它。

也可以参考setValue()。

int QRangeControl::lineStep () const

返回当前线步。

也可以参考setSteps()和pageStep()。

int QRangeControl::maxValue () const

返回当前范围的最大值。

也可以参考setMaxValue()、setRange()和minValue()。

int QRangeControl::minValue () const

返回当前范围的最小值。

也可以参考setMinValue()、setRange()和maxValue()。

int QRangeControl::pageStep () const

返回当前页步。

也可以参考setSteps()和lineStep()。

int QRangeControl::positionFromValue ( int logical_val, int span ) const [保护]

logical_val转换为一个象素位置。minValue()映射为0,maxValue()映射为span并且其它值就被均匀地分布在两者之间。

这个函数可以处理整个整数范围而不会溢出。

当绘制一个范围控制时,比如在屏幕上的QScrollBar,调用这个函数是很有用的。

也可以参考valueFromPosition()。

int QRangeControl::prevValue () const [保护]

返回范围控制的上一个值。“上一个值”指的是在最后一次值的变化之前出现的值。设置一个新的范围也许会影响到值,因为这个值被强制在特定的范围之内。当范围控制被初始创建时,这个值和value()一样。

如果你调用setRange()导致当前值发生改变得话,prevValue()可能在当前合法范围之外。例如,如果一个范围是[0, 1000]并且当前值为500,setRange(0, 400)将会使value()返回400并且prevValue()返回500。

也可以参考value()和setRange()。

void QRangeControl::rangeChange () [虚 保护]

只要范围控制的范围发生改变,这个虚函数就会被调用。当范围发生改变时,你想被通知的话,你可以重新实现它。默认实现是什么都不做。

注意在范围发生改变之后,这个方法才被调用。

也可以参考setRange()、valueChange()和stepChange()。

QDialQSliderQSpinBox中被重新实现。

void QRangeControl::setMaxValue ( int maxVal )

设置范围的当前最大值为maxVal

如果需要,需要minValue()将会被调整来确保范围仍然有效。

也可以参考maxValue()和setMinValue()。

void QRangeControl::setMinValue ( int minVal )

设置范围的当前最小值为minValue

如果需要,需要maxValue()将会被调整来确保范围仍然有效。

也可以参考minValue()和setMaxValue()。

void QRangeControl::setRange ( int minValue, int maxValue )

设置范围控制的最小值为minValue,最大值为maxValue

如果新的最小值和最大值中的一个或两个与原先设定的不同,调用虚函数rangeChange()。如果因为当前值在新的范围之外,它需要被调整,那么调用虚函数valueChange()。

如果maxValue小于minValueminValue变为合法的。

也可以参考minValue()和maxValue()。

实例:listbox/listbox.cppt12/lcdrange.cppt5/main.cppt6/main.cppt8/lcdrange.cppxform/xform.cpp

void QRangeControl::setSteps ( int lineStep, int pageStep )

设置范围控制的线步为lineStep,页步为pageStep

如果新的线步和/或页步与以前的设定不同,调用虚函数stepChange()。

也可以参考lineStep()、pageStep()和setRange()。

void QRangeControl::setValue ( int value )

设定范围控制的值为value,并且强制它变为在合法范围内的值。

如果新的值和以前的值不同,调用虚函数valueChange()。旧的值也可以通过prevValue()得到。

也可以参考value().

void QRangeControl::stepChange () [虚 保护]

只要范围控制的线步/页步设置发生变化,这个虚函数就被调用。如果你需要在步长发生变化时,你想被通知的话,你可以重新实现它。默认实现是什么都不做。

注意在步长设置被改变之后,这个方法才被调用。

也可以参考setSteps()、rangeChange()和valueChange()。

void QRangeControl::subtractLine ()

setValue( value() - lineStep() )相同。

如果值发生改变,那么valueChange()被调用。

也可以参考addLine()、subtractPage()和setValue()。

void QRangeControl::subtractPage ()

setValue( value() - pageStep() )相同。

如果值发生改变,那么valueChange()被调用。

也可以参考addPage()、subtractLine()和setValue()。

int QRangeControl::value () const

返回当前范围控制的值。这个值已经被保证在[minValue(), maxValue()]范围内。

也可以参考setValue()和prevValue()。

void QRangeControl::valueChange () [虚 保护]

只要值发生变化,这个虚函数就被调用。如果你需要在值发生变化时,你想被通知的话,你可以重新实现它。默认实现是什么都不做。

注意在值发生变化之后,这个方法才被调用。以前的值可以通过prevValue()来得到。

也可以参考setValue()、addPage()、subtractPage()、addLine()、subtractLine()、rangeChange()和stepChange()。

QDialQSliderQSpinBox中被重新实现。

int QRangeControl::valueFromPosition ( int pos, int span ) const [保护]

把像素位置pos转换为值。0映射为minValue(),span映射为maxValue(),并且其它值被平均分布在这两者之间。

这个函数可以用来操作整个整数范围而不会溢出。

当你真正实现一个范围控制窗口部件时,比如QScrollBar和想处理鼠标按下事件时,调用这个函数是很有用的。这个函数会映射屏幕坐标为合法值。

也可以参考positionFromValue()。


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。


Copyright © 2002 Trolltech Trademarks 译者:Cavendish
Qt 3.0.5版