返回介绍

QButton类

发布于 2019-10-04 14:58:33 字数 11921 浏览 1029 评论 0 收藏 0

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

#include <qbutton.h>

继承了QWidget。

被QCheckBox、QPushButton、QRadioButton和QToolButton继承。

所有成员函数的列表。

公有成员

  • QButton ( QWidget*parent = 0, constchar*name = 0, WFlagsf = 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 ( boolon )
  • void stateChanged ( intstate )

属性

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

保护成员

  • void setToggleButton ( boolb )
  • virtual void setToggleType ( ToggleTypetype )
  • void setOn ( boolon )
  • virtual void setState ( ToggleStates )
  • virtual bool hitButton ( constQPoint&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提供五个信号:

  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所提供的所有按钮(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, constchar*name = 0, WFlagsf = 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 ( constQPoint&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中重新实现的。

constQPixmap* QButton::pixmap () const

返回按钮中所显示的像素映射。详细情况请参考“pixmap”属性。

void QButton::pressed () [信号]

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

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

实例:network/httpd/httpd.cpp和popup/popup.cpp。

void QButton::released () [信号]

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

也可以参考pressed()、clicked()和toggled()。

void QButton::setAccel ( constQKeySequence& ) [虚]

设置按钮的相关快捷键。详细情况请参考“accel”属性。

void QButton::setAutoRepeat ( bool ) [虚]

设置autoRepeat是否生效。详细情况请参考“autoRepeat”属性。

void QButton::setAutoResize ( bool )

设置autoResize是否生效。详细情况请参考“autoResize”属性。

void QButton::setDown ( bool ) [虚]

设置按钮是否被按下。详细情况请参考“down”属性。

void QButton::setOn ( boolon ) [protected]

on为真,设置这个按钮的状态为开,否则为关。

也可以参考toggleState。

void QButton::setPixmap ( constQPixmap& ) [虚]

设置按钮上显示的像素映射。详细情况请参考“pixmap”属性。

void QButton::setState ( ToggleStates ) [虚 保护]

设置按钮的状态为ss可以为Off、NoChange或On。

void QButton::setText ( constQString& ) [虚]

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

void QButton::setToggleButton ( boolb ) [protected]

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

也可以参考toggleButton。

void QButton::setToggleType ( ToggleTypetype ) [虚 保护]

设置按钮的切换类型为type

type可以被设置为SingleShot、Toggle和TriState

ToggleState QButton::state () const

如果按钮是被切换的,返回真,否则返回假。详细情况请参考“toggleState”属性。

void QButton::stateChanged ( intstate ) [信号]

只要切换按钮改变状态,这个信号就被发送。如果按钮是开的,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 ( boolon ) [信号]

只要切换按钮改变状态,这个信号就被发送。如果按钮是开的,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()来得到这个属性值。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文