QButton类

Qt 3.0.5

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

QButton类参考

QButton类是按钮窗口部件的抽象基类,提供了按钮所共有的功能。 详情请见……

#include <qbutton.h>

继承了QWidget

QCheckBoxQPushButtonQRadioButtonQToolButton继承。

所有成员函数的列表。

公有成员

公有槽

信号

属性

  • QKeySequence accel - 与按钮有关的快捷键
  • bool autoRepeat - 是否能够自动重复
  • bool autoResize - 是否能够自动重定义大小 (废弃的)
  • bool down - 按钮是否被按下
  • bool exclusiveToggle - 按钮是否是排它的 (只读)
  • bool on - 按钮是否被切换 (只读)
  • QPixmap pixmap - 在按钮上显示的像素映射
  • QString text - 在按钮上显示的文本
  • bool toggleButton - 按钮是否是一个切换按钮 (只读)
  • ToggleState toggleState - 按钮是否被切换 (只读)
  • ToggleType toggleType - 按钮的切换类型 (只读)

保护成员


详细描述

QButton类是按钮窗口部件的抽象基类,提供了按钮所共有的功能。

如果你想创建一个按钮,请使用QPushButton

QButton类实现了一个抽象按钮,并且让它的子类来指定如何回复用户的行为和如何画按钮。

QButton提供了推动和切换按钮。QRadioButtonQCheckBox类只提供了切换按钮,QPushButton和QToolButton提供了切换按钮和推动按钮。

任何按钮都可以有一个文本的或者像素映射的标签。setText()设置按钮为一个文本按钮并且setPixmap()设置它为一个像素映射按钮。文本/像素映射的使用中需要创建当按钮被取消使用时所需的“失效的”外观。

QButton提供了按钮所要用到的绝大多数状态:

  • isDown()决定按钮是否被下。
  • isOn()决定按钮是否是开的。只有切换按钮才能被切换为开或关(请看下面)。
  • isEnabled()决定按钮是否可以被用户按下。
  • setAutoRepeat()决定如果用户按下按钮,按钮是否可以自动回复。
  • setToggleButton()决定按钮是否是一个切换按钮。

isDown()和isOn()的不同点如下: 当用户点击一个切换按钮并且把它切换为开,按钮首先被按下并且然后被释放变为状态。当用户再次点击(切换为关),按钮首先移动到被按下状态,然后变为状态(isOn()和isDown()都为假)。

默认按钮(在很多对话框中被使用的)由QPushButton::setDefault()和QPushButton::setAutoDefault()提供。

QButton提供五个信号:

  1. 当鼠标光标在按钮内,鼠标左键被按下时,pressed()被发送。
  2. 当鼠标左键被释放时,released()被发送。
  3. 当按钮首先被按下然后又被释放或者快捷键被按下,或者当animateClick()被调用时,clicked()被发送。
  4. 当切换按钮的状态变化时,toggled(bool)被发送。
  5. 当一个三态切换按钮的状态变化时,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所提供的所有按钮(QPushButtonQToolButtonQCheckBoxQRadioButton)都能够既显示文本也显示像素映射。

为了继承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 - 按下按钮,在OnOff状态中切换。
  • QButton::Tristate - 按下按钮,在OnOffNoChange状态中循环。


成员函数文档

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()、autoRepeatdown

实例:fonts/simple-qfont-demo/viewer.cpplistbox/listbox.cppnetwork/clientserver/client/client.cppnetwork/ftpclient/ftpmainwindow.cpprichtext/richtext.cppt2/main.cppt4/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 () [信号]

当按钮被按下的时候,这个信号被发送。

也可以参考released()和clicked()。

实例:network/httpd/httpd.cpppopup/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 ) [虚 保护]

设置按钮的状态为ss可以为OffNoChangeOn

void QButton::setText ( const QString & ) [虚]

设置按钮上显示的文本。详细情况请参考“text”属性。

void QButton::setToggleButton ( bool b ) [protected]

如果b为真,这个按钮变为一个切换按钮,如果b为假,这个按钮变为一个普通按钮。

也可以参考toggleButton

void QButton::setToggleType ( ToggleType type ) [虚 保护]

设置按钮的切换类型为type

type可以被设置为SingleShotToggleTriState

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 () [槽]

切换一个切换按钮的状态。

也可以参考onsetOn()、toggled()和toggleButton

ToggleType QButton::toggleType () const

返回按钮的切换类型。详细情况请参考“toggleType”属性。

void QButton::toggled ( bool on ) [信号]

只要切换按钮改变状态,这个信号就被发送。如果按钮是开的,on为真,或者如果按钮是关的,on为假。

这也许是一个用户行为的结果,toggle()槽被激活,或者因为setOn()被调用。

也可以参考clicked()。

实例:listbox/listbox.cpp


属性文档

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版