主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数 |
QButton类参考
QButton类是按钮窗口部件的抽象基类,提供了按钮所共有的功能。 详情请见……
#include <qbutton.h>
继承了QWidget。
被QCheckBox、QPushButton、QRadioButton和QToolButton继承。
公有成员
- QButton ( QWidget * parent = 0, const char * name = 0, WFlags f = 0 )
- ~QButton ()
- QString text () const
- virtual void setText ( const QString & )
- const QPixmap * pixmap () const
- virtual void setPixmap ( const QPixmap & )
- QKeySequence accel () const
- virtual void setAccel ( const QKeySequence & )
- bool isToggleButton () const
- enum ToggleType { SingleShot, Toggle, Tristate }
- ToggleType toggleType () const
- virtual void setDown ( bool )
- bool isDown () const
- bool isOn () const
- enum ToggleState { Off, NoChange, On }
- ToggleState state () const
- bool autoResize () const (obsolete)
- void setAutoResize ( bool ) (obsolete)
- bool autoRepeat () const
- virtual void setAutoRepeat ( bool )
- bool isExclusiveToggle () const
- QButtonGroup * group () const
公有槽
- void animateClick ()
- void toggle ()
信号
- void pressed ()
- void released ()
- void clicked ()
- void toggled ( bool on )
- void stateChanged ( int state )
属性
- QKeySequence accel - 与按钮有关的快捷键
- bool autoRepeat - 是否能够自动重复
- bool autoResize - 是否能够自动重定义大小 (废弃的)
- bool down - 按钮是否被按下
- bool exclusiveToggle - 按钮是否是排它的 (只读)
- bool on - 按钮是否被切换 (只读)
- QPixmap pixmap - 在按钮上显示的像素映射
- QString text - 在按钮上显示的文本
- bool toggleButton - 按钮是否是一个切换按钮 (只读)
- ToggleState toggleState - 按钮是否被切换 (只读)
- ToggleType toggleType - 按钮的切换类型 (只读)
保护成员
- void setToggleButton ( bool b )
- virtual void setToggleType ( ToggleType type )
- void setOn ( bool on )
- virtual void setState ( ToggleState s )
- virtual bool hitButton ( const QPoint & pos ) const
- virtual void drawButton ( QPainter * )
- virtual void drawButtonLabel ( QPainter * )
- virtual void paintEvent ( QPaintEvent * )
详细描述
QButton类是按钮窗口部件的抽象基类,提供了按钮所共有的功能。
如果你想创建一个按钮,请使用QPushButton。
QButton类实现了一个抽象按钮,并且让它的子类来指定如何回复用户的行为和如何画按钮。
QButton提供了推动和切换按钮。QRadioButton和QCheckBox类只提供了切换按钮,QPushButton和QToolButton提供了切换按钮和推动按钮。
任何按钮都可以有一个文本的或者像素映射的标签。setText()设置按钮为一个文本按钮并且setPixmap()设置它为一个像素映射按钮。文本/像素映射的使用中需要创建当按钮被取消使用时所需的“失效的”外观。
QButton提供了按钮所要用到的绝大多数状态:
- isDown()决定按钮是否被按下。
- isOn()决定按钮是否是开的。只有切换按钮才能被切换为开或关(请看下面)。
- isEnabled()决定按钮是否可以被用户按下。
- setAutoRepeat()决定如果用户按下按钮,按钮是否可以自动回复。
- setToggleButton()决定按钮是否是一个切换按钮。
isDown()和isOn()的不同点如下: 当用户点击一个切换按钮并且把它切换为开,按钮首先被按下并且然后被释放变为开状态。当用户再次点击(切换为关),按钮首先移动到被按下状态,然后变为关状态(isOn()和isDown()都为假)。
默认按钮(在很多对话框中被使用的)由QPushButton::setDefault()和QPushButton::setAutoDefault()提供。
QButton提供五个信号:
- 当鼠标光标在按钮内,鼠标左键被按下时,pressed()被发送。
- 当鼠标左键被释放时,released()被发送。
- 当按钮首先被按下然后又被释放或者快捷键被按下,或者当animateClick()被调用时,clicked()被发送。
- 当切换按钮的状态变化时,toggled(bool)被发送。
- 当一个三态切换按钮的状态变化时,stateChanged(int)被发送。
如果一个文本按钮的文本中有“&”,QButton会创建一个自动快捷键。下面的代码创建一个标签为“Rock & Roll”(c下面有下划线)的推动按钮。这个按钮有一个自动快捷键,Alt+C:
QPushButton *p = new QPushButton( "Ro&ck && Roll", this );
在这个实例中,当用户按下Alt+C时,按钮将会调用animateClick()。
你也可以使用setAccel()函数来设置一个定制的快捷键。这个对于绝大多数像素映射按钮是很有用的,因为它们没有自动快捷键。
QPushButton *p; p->setPixmap( QPixmap("print.png") ); p->setAccel( ALT+Key_F7 );
Qt所提供的所有按钮(QPushButton、QToolButton、QCheckBox和QRadioButton)都能够既显示文本也显示像素映射。
为了继承QButton,你至少不得不重新实现drawButton()(绘制按钮的外形)和drawButtonLabel()(绘制它的文本或像素映射)。通常也被建议重新实现sizeHint(),并且有时也被建议重新实现hitButton()(为了决定一个按钮按下是否在按钮内)。
为了减少闪烁,QButton::paintEvent()设置drawButton()中所要画的一个像素映射。你不用在QButton的子类中重新实现paintEvent(),除非你想接管全部的绘制工作。
也可以参考QButtonGroup和抽象窗口部件类。
成员类型文档
QButton::ToggleState
这个枚举类型定义了一个切换按钮在任何时候的状态。可能的值如下:
- QButton::Off - 按钮在“关”状态
- QButton::NoChange - 按钮在默认/未改变状态
- QButton::On - 按钮在“开”状态
QButton::ToggleType
这个枚举类型定义了按钮对一个鼠标/键盘按下可以做什么响应:
- QButton::SingleShot - 按下按钮导致一个行为,然后按钮返回一个未按下状态。
- QButton::Toggle - 按下按钮,在On和Off状态中切换。
- QButton::Tristate - 按下按钮,在On、Off和NoChange状态中循环。
成员函数文档
QButton::QButton ( QWidget * parent = 0, const char * name = 0, WFlags f = 0 )
构造一个父对象为parent并且名称为name,使用窗口部件标记f的标准按钮。如果parent是一个QButtonGroup,这个构造函数将调用QButtonGroup::insert()。
QButton::~QButton ()
销毁这个按钮。QKeySequence QButton::accel () const
返回这个按钮的相关快捷键。详细情况请参考“accel”属性。
void QButton::animateClick () [槽]
执行一个自动点击:按钮被按下并且在一小段时间后被释放。pressed()、released()、clicked()、toggled()和stateChanged()信号在适当的时候被发送。
如果按钮是失效的,这个函数将不做任何事情。
也可以参考accel。
bool QButton::autoRepeat () const
如果autoRepeat生效,返回真,否则返回假。详细情况请参考“autoRepeat”属性。
bool QButton::autoResize () const
如果autoResize生效,返回真,否则返回假。详细情况请参考“autoResize”属性。
void QButton::clicked () [信号]
当按钮被激活时(比如,当鼠标光标在按钮中,按钮首先被按下并且然后被释放),或者当快捷键被按下时,或者animateClick()被调用时,这个信号被发送。如果你调用setDown(),这个信号不被发送。
如果你想把几个按钮连接到同一个槽中,QButtonGroup::clicked()信号可以做这样的工作。
也可以参考pressed()、released()、toggled()、autoRepeat和down。
实例:fonts/simple-qfont-demo/viewer.cpp、listbox/listbox.cpp、network/clientserver/client/client.cpp、network/ftpclient/ftpmainwindow.cpp、richtext/richtext.cpp、t2/main.cpp和t4/main.cpp。
void QButton::drawButton ( QPainter * ) [虚 保护]
绘制按钮。默认实现是不做任何事。这个虚函数是通过子类的重新实现来绘制真正的按钮。这些重新实现被假定同时在同一点调用drawButtonLabel()。
也可以参考drawButtonLabel()和paintEvent()。
void QButton::drawButtonLabel ( QPainter * ) [虚 保护]
绘制按钮文本或者像素映射。这个虚函数是通过子类的重新实现来绘制真正的按钮。它是由drawButton()调用的。
也可以参考drawButton()和paintEvent()。
QButtonGroup * QButton::group () const
返回这个按钮所属的按钮组的指针。如果这个按钮不是任何一个QButtonGroup的成员,这个函数返回0。
也可以参考QButtonGroup。
bool QButton::hitButton ( const QPoint & pos ) const [虚 保护]
如果pos在可以点击的按钮的矩形中,返回真,或者如果在外面返回假。默认情况下,可点击区域是整个窗口部件。尽管子类可以重新实现它。
bool QButton::isDown () const
如果按钮被按下,返回真,否则返回假。详细情况请参考“down”属性。
bool QButton::isExclusiveToggle () const
如果按钮是排它的,返回真,否则返回假。详细情况请参考“exclusiveToggle”属性。
bool QButton::isOn () const
如果按钮被切换,返回真,否则返回假。详细情况请参考“on”属性。
bool QButton::isToggleButton () const
如果按钮是一个切换按钮,返回真,否则返回假。详细情况请参考“toggleButton”属性。
void QButton::paintEvent ( QPaintEvent * ) [虚 保护]
drawButtonLabel(). 处理按钮的绘制事件。小的和有代表性的复杂按钮被使用双缓存绘制来减少闪烁。实际的绘制是在虚函数drawButton()和drawButtonLabel()中完成的。
也可以参考drawButton()和drawButtonLabel()。
从QWidget中重新实现的。
const QPixmap * QButton::pixmap () const
返回按钮中所显示的像素映射。详细情况请参考“pixmap”属性。
void QButton::pressed () [信号]
当按钮被按下的时候,这个信号被发送。
实例:network/httpd/httpd.cpp和popup/popup.cpp。
void QButton::released () [信号]
当按钮被释放的时候,这个信号被发送。
也可以参考pressed()、clicked()和toggled()。
void QButton::setAccel ( const QKeySequence & ) [虚]
设置按钮的相关快捷键。详细情况请参考“accel”属性。
void QButton::setAutoRepeat ( bool ) [虚]
设置autoRepeat是否生效。详细情况请参考“autoRepeat”属性。
void QButton::setAutoResize ( bool )
设置autoResize是否生效。详细情况请参考“autoResize”属性。
void QButton::setDown ( bool ) [虚]
设置按钮是否被按下。详细情况请参考“down”属性。
void QButton::setOn ( bool on ) [protected]
当on为真,设置这个按钮的状态为开,否则为关。
也可以参考toggleState。
void QButton::setPixmap ( const QPixmap & ) [虚]
设置按钮上显示的像素映射。详细情况请参考“pixmap”属性。
void QButton::setState ( ToggleState s ) [虚 保护]
设置按钮的状态为s。s可以为Off、NoChange或On。
void QButton::setText ( const QString & ) [虚]
设置按钮上显示的文本。详细情况请参考“text”属性。
void QButton::setToggleButton ( bool b ) [protected]
如果b为真,这个按钮变为一个切换按钮,如果b为假,这个按钮变为一个普通按钮。
也可以参考toggleButton。
void QButton::setToggleType ( ToggleType type ) [虚 保护]
设置按钮的切换类型为type。type可以被设置为SingleShot、Toggle和TriState。
ToggleState QButton::state () const
如果按钮是被切换的,返回真,否则返回假。详细情况请参考“toggleState”属性。
void QButton::stateChanged ( int state ) [信号]
只要切换按钮改变状态,这个信号就被发送。如果按钮是开的,state为2,如果是“未改变”状态,为1,或者如果按钮是关的,为0。这也许是一个用户行为的结果,toggle()槽激活,或者因为setState()或setOn()被调用。
也可以参考clicked()。
QString QButton::text () const
返回按钮上所显示的文本。详细情况请参考“text”属性。
void QButton::toggle () [槽]
切换一个切换按钮的状态。也可以参考on、setOn()、toggled()和toggleButton。
ToggleType QButton::toggleType () const
返回按钮的切换类型。详细情况请参考“toggleType”属性。
void QButton::toggled ( bool on ) [信号]
只要切换按钮改变状态,这个信号就被发送。如果按钮是开的,on为真,或者如果按钮是关的,on为假。这也许是一个用户行为的结果,toggle()槽被激活,或者因为setOn()被调用。
也可以参考clicked()。
属性文档
QKeySequence accel
这个属性保存的是按钮相关的快捷键。
如果没有快捷键被设置,这个属性为0。如果你设置这个属性为0,那么任何当前的快捷键都被删除。
使用setAccel()来设置这个属性值并且使用accel()来得到这个属性值。
bool autoRepeat
这个属性保存的是autoRepeat是否生效。
如果autoRepeat生效,那么如果按钮是按下的,clicked()信号会被定期发送。这个属性对切换按钮没有效果。autoRepeat默认是关闭的。
使用setAutoRepeat()来设置这个属性值并且使用autoRepeat()来得到这个属性值。
bool autoResize
这个属性保存的是autoResize是否生效。
这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。
如果autoResize生效,那么只要内容发生改变,按钮就会重新定义自己的大小。
使用setAutoResize()来设置这个属性值并且使用autoResize()来得到这个属性值。
bool down
这个属性保存的是按钮是否被按下。
如果这个属性为真,按钮就被设置为被按下。如果你设置这个属性为真,信号pressed()和clicked()就不会被发送。这个属性默认为假。
使用setDown()来设置这个属性值并且使用isDown()来得到这个属性值。
bool exclusiveToggle
这个属性保存的是按钮是否是排它的。
如果这个属性为真并且这个按钮在一个QButtonGroup里,这个按钮只有在其它按钮之一被切换为开的时候,它自己才能被切换为关。这个属性默认为假。
使用isExclusiveToggle()来得到这个属性值。
bool on
这个属性保存的是按钮是否被切换。
这个属性只有对于切换按钮才能被设置。
使用isOn()来得到这个属性值。
QPixmap pixmap
这个属性保存的是按钮上显示的像素映射。
如果像素映射是单色的(比如,它是一个QBitmap或者它的深度为1)并且没有掩码,这个属性将设置像素映射为它自己的掩码。这样的目的是为了绘制对于切换按钮是很重要的透明位图。
如果没有像素映射被设置,pixmap()返回0。
使用setPixmap()来设置这个属性值并且使用pixmap()来得到这个属性值。
QString text
这个属性保存的是按钮上显示的文本。
如果按钮没有文本,这个属性将返回一个零字符串。如果文本中有一个“&”,那么一个使用紧随“&”之后的字母的快捷键将被创建。
没有默认文本。
使用setText()来设置这个属性值并且使用text().来得到这个属性值。
bool toggleButton
这个属性保存的是按钮是否是切换按钮。
默认值为假。
使用isToggleButton()来得到这个属性值。
ToggleState toggleState
这个属性保存的是按钮是否被切换。
如果这个属性被改变,那么它不会导致按钮被重新绘制。
使用state()来得到这个属性值。
ToggleType toggleType
这个属性保存的是按钮的切换类型。
默认切换类型是SingleShot。
使用toggleType()来得到这个属性值。
这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。
Copyright © 2002 Trolltech | Trademarks | 译者:Cavendish | Qt 3.0.5版
|