分类: 嵌入式
2011-06-07 10:44:18
QButton类是按钮窗口部件的抽象基类,提供了按钮所共有的功能。 详情请见……
#include <qbutton.h>
继承了QWidget。
被QCheckBox、QPushButton、QRadioButton和QToolButton继承。
公有成员QButton类是按钮窗口部件的抽象基类,提供了按钮所共有的功能。
如果你想创建一个按钮,请使用QPushButton。
QButton类实现了一个抽象按钮,并且让它的子类来指定如何回复用户的行为和如何画按钮。
QButton提供了推动和切换按钮。QRadioButton和QCheckBox类只提供了切换按钮,QPushButton和QToolButton提供了切换按钮和推动按钮。
任何按钮都可以有一个文本的或者像素映射的标签。setText()设置按钮为一个文本按钮并且setPixmap()设置它为一个像素映射按钮。文本/像素映射的使用中需要创建当按钮被取消使用时所需的“失效的”外观。
QButton提供了按钮所要用到的绝大多数状态:
isDown()和isOn()的不同点如下: 当用户点击一个切换按钮并且把它切换为开,按钮首先被按下并且然后被释放变为开状态。当用户再次点击(切换为关),按钮首先移动到被按下状态,然后变为关状态(isOn()和isDown()都为假)。
默认按钮(在很多对话框中被使用的)由QPushButton::setDefault()和QPushButton::setAutoDefault()提供。
QButton提供五个信号:
如果一个文本按钮的文本中有“&”,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::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::i***clusiveToggle () 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里,这个按钮只有在其它按钮之一被切换为开的时候,它自己才能被切换为关。这个属性默认为假。
使用i***clusiveToggle()来得到这个属性值。
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()来得到这个属性值。