QT开发(七)——QT按钮组件

    QT中有六种按钮组件,分别是按压按钮QPushButton、工具按钮QToolButton、单选按钮QRadioButton、多选按钮QCheckBox、命令链接按钮QCommandLinkButton、按钮盒QButtonBox

一、QPushButton组件

1QPushButton组件简介

QPushButton组件用于接受用户点击事件,能够显示提示字符串,是功能性组件,需要父组件作为容器,能够在父组件中进行定位,用于执行命令或触发事件。

QPushButton的类继承如下:

QPushButton public QAbstractButton pubic QWidget public QObject, public QPaintDevice

2QPushButton组件属性

    QPushButton 组件属性设置选项:

    A、name:组件对应源代码中的名字。

    B、text:组件对应图形界面中显示的名字。

    C、font:设置text的字体。

    D、enabled:组件是否可用。

3QPushButton组件常用成员函数

QPushButton::QPushButtonconst QString &textQWidget *parentconst char *name = 0);

构造一个名称为name,父对象为parent并且文本为text的按压按钮。

void QAbstractButton::setTextconst QString &

设置按钮上显示的文本。

QString QAbstractButton::text()const

返回按钮上显示的文本。

void QAbstractButton::pressed()[signal]

当按下按钮时,发射信号。

void QAbstractButton::clicked()[signal]

当单击按钮时,发射信号。

void QAbstractButton::released()[signal]

当释放按钮时,发射信号。

4、QPushButton实例

    QPushButton *button = new QPushButton("OK", this);

    connect(button, SIGNAL(clicked()), this, SLOT(onOK()));

二、QRadioButton组件

1QRaidoButton组件简介

    QRaidoButton单选按钮,用于提供两个或多个互斥选项。

2QRaidoButton组件属性

    QRaidoButton单选按钮属性设置选项:

    A、name:组件对应源代码中所显示的名字。

    B、text:组件对应图形界面中所显示的名字。

    C、font:设置text字体。

    D、enabled:组件是否可用,可用为true,不可用为false。

    E、checked:用来设置或返回是否选中单选按钮,选中为true,未选中为false。

3QRaidoButton组件常用成员函数:

QRaidoButton::QRadioButtonconst QString &textQWidget *parentconst char *name = 0

构造一个名称为name、父对象为parent并且文本为text的单选按钮。

bool QRadioButton::isChecked()const

返回是否选中单选按钮,选中时返回true,没有选中时返回false。

void QAbstractButton ::setTextconst QString &

设置组件上显示的文本。

QString QAbstractButton ::text()const

返回该按钮上显示的文本。

 void QAbstractButton ::stateChangedint state[signal]

当更改checked属性值时,将发射信号。

void QRadioButton::setCheckedbool check[virtual slot]

设置单选按钮是否被选中为checked

4、QRadioButton实例

Widget.h文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui/QWidget>
#include <QButtonGroup>
#include <QRadioButton>
class Widget : public QWidget
{
    Q_OBJECT
    
public:
    Widget(QWidget *parent = 0);
    ~Widget();
private:
    QButtonGroup *group;
    QRadioButton *appleradio;
    QRadioButton *bananaradio;
    QRadioButton *pearradio;
public slots:
    void onRadioClick();
};
#endif // WIDGET_H

Widget.cpp文件:

#include "widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    group = new QButtonGroup(this);
    appleradio = new QRadioButton("apple", this);
    appleradio->move(5, 5);
    bananaradio = new QRadioButton("banana", this);
    bananaradio->move(5, 25);
    pearradio = new QRadioButton("pear", this);
    pearradio->move(5, 50);
    group->addButton(appleradio, 0);
    group->addButton(bananaradio, 1);
    group->addButton(pearradio, 2);
    appleradio->setChecked(true);
    //多个QRadioButton连接到onRadioClick()
    connect(appleradio, SIGNAL(clicked()), this, SLOT(onRadioClick()));
    connect(bananaradio, SIGNAL(clicked()), this, SLOT(onRadioClick()));
    connect(pearradio, SIGNAL(clicked()), this, SLOT(onRadioClick()));
}
Widget::~Widget()
{
    
}
void Widget::onRadioClick()
{
    switch(group->checkedId())
    {
    case 0:
        qDebug() << "apple";
        break;
    case 1:
        qDebug() << "banana";
        break;
    case 2:
        qDebug() << "pear";
        break;
    }
}

Main.cpp文件:

#include <QtGui/QApplication>
#include "widget.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QButtonGroup group;
    Widget w;
    w.show();
    
    return a.exec();
}

三、QCheckBox组件

1QCheckBox组件简介

    QCheckBox复选框,复选框提供多选多。

    QCheckBox有三种状态:checked、unchecked和PartiallyChecked。

2QCheckBox组件属性

    QCheckBox复选框属性设置选项:

    A、name:组件对应源代码中所显示的名字。

    B、text:组件对应图形界面中所显示的名字。

    C、font:设置text字体。

 D、enabled:组件是否可用,可用为true,不可用为false。

    E、checked:用来设置或返回是否选中单选按钮,选中为true,未选中为false。

3QCheckBox组件常用成员函数

QCheckBox::QCheckBoxconst QString &textQWidget *parentconst char *name = 0

构造一个名称为name、父对象为parent并且文本为text的复选框。

bool QCheckBox::isChecked()const

选中复选框,返回true,否则返回false。

void QAbstractButton ::setTextconst QString &

设置组件上显示的文本。

 QString QAbstractButton ::text()const

返回组件上显示的文本。

void QAbstractButton ::stateChangeint state[signal]

当更改checked属性时,将发射这个信号。

void QCheckBox::setCheckedbool check[slot]

设置复选框是否选中,状态为check的值。

4、QCheckBox实例

#include <QtGui/QApplication>
#include <QWidget>
#include <QCheckBox>
#include <QVBoxLayout>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    QVBoxLayout *vlayout = new QVBoxLayout(&w);
    QCheckBox *check1 = new QCheckBox("check1", &w);
    QCheckBox *check2 = new QCheckBox("check2", &w);
    QCheckBox *check3 = new QCheckBox("check3", &w);
    vlayout->addWidget(check1);
    vlayout->addWidget(check2);
    vlayout->addWidget(check3);
    w.setLayout(vlayout);
    w.show();
    
    return a.exec();
}

四、QToolButton组件

1QToolButton组件简介

    QToolButton工具按钮,是一种用于命令或者选项的可以快速访问的按钮,通常在ToolBar里面。工具按钮通常显示的是图标,而不是文本标签。ToolButton支持自动浮起。在自动浮起模式中,按钮只有在鼠标指向它的时候才绘制三维的框架。

2QToolButton组件属性

    QToolButton工具按钮设置选项:

 A、name:组件对应源代码中的名称。

    B、text:工具按钮标签文本。

    C、font:设置工具按钮标签的字体。

    D、autoRaise:自动浮起是否生效。

    E、iconSet:提供显示在按钮上的图标的图标集。

 F、on:工具按钮是否为开。

    G、textLabel:工具按钮自动提示文本。

    H、usesTextLabel:自动提示文本textLabel是否工作,默认为false。

3QToolButton组件常用成员函数

QToolButton::QToolButtonQWidget *parentconst char *name = 0

构造一个名字为name,父对象为parent的ToolButton。

QToolButton::QToolButtonconst QIconset &iconSetconst QString &textLabelconst QString &grouptextQObject *receiverconst char *slotQToolBar *parentconst char *name = 0

构造一个名称为name,父对象为parent(必须为QToolBar)的工具按钮。工具按钮将显示iconSet,工具提示为textLabel,状态条信息为grouptext,同时会将工具按钮链接到receiver对象的槽函数。

QToolBButton::QToolButtonArrowType typeQWidget *parentconst char *name = 0

把工具按钮构造成箭头按钮,type定义了箭头的方向,可用的值有LeftArrow、RightArrow、UpArrow、DownArrow。

void QToolButton::setAutoRaisebool enable

根据参数enable值设置按钮是否可自动浮起。

void QToolButton::setIconconst QIconSet &

设置显示在工具按钮上的图标。

void QToolButton::setOnbool enable[virtual slot]

设置按钮是否为开,enable等于true则设置为开,否则设置为关。

void QToolButton::setTextLabelconst QString &[slot]

设置按钮的提示标签。

QString QToolButton::textLabel()const

返回按钮的提示标签。

void setToolButtonStyle ( Qt::ToolButtonStyle style )

设置ToolButton的样式,有下列样式:

Qt::ToolButtonIconOnly只显示图标

Qt::ToolButtonTextOnly只显示文字

Qt::ToolButtonTextBesideIcon文字显示在图标旁

Qt::ToolButtonTextUnderIcon文字显示在图标下

Qt::ToolButtonFollowStyle根据QStyle::StyleHint进行设置

void setPopupMode ( ToolButtonPopupMode mode )

设置ToolButton的菜单弹出方式ToolButtonPopupMode,弹出方式如下:QToolButton::DelayedPopup延迟弹出

QToolButton::MenuButtonPopup菜单弹出

QToolButton::InstantPopup点击立即弹出

4、QToolButton实例

#include <QtGui/QApplication>
#include <QWidget>
#include <QToolButton>
#include <QMenu>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    QToolButton *toolbutton = new QToolButton(&w);
    toolbutton->setText("ToolButton");
    QMenu *menu = new QMenu();
    menu->addMenu("1");
    menu->addMenu("2");
    menu->addMenu("3");
    toolbutton->setToolButtonStyle(Qt::ToolButtonTextOnly);
    toolbutton->setPopupMode(QToolButton::InstantPopup   );
    toolbutton->setMenu(menu);
    w.show();
    
    return a.exec();
}

五、QCommandLinkButton组件

1QCommandLinkButton组件简介

    QCommandLinkButton命令链接按钮,继承自QPushButton,用于在互斥选项中选择一项,QCommandLinkButton除带有正常的按钮上的文字描述文本外,默认情况下,将携带一个箭头图标,表明按下按钮将打开另一个窗口或页面。

2QCommandLinkButton组件属性

    QCommandLinkButton组件属性设置选项:

    A、name:组件对应源代码中的名称。

    B、text:组件对应图形界面中所显示的标签。

    C、font:设置text的字体。

    D、enabled:组件是否可用。

    E、description:一个描述性的标签,以配合按钮上的文字。

3QCommandLinkButton组件常用成员函数

QCommandLinkButton::QCommandLinkButtonQWidget *parent = 0

构造一个父对象为parent的命令链接按钮。

QCommandLinkButton::QCommandLinkButtonconst QString &textQWidget *parent = 0

构造一个父对象为parent、文本为text的命令链接按钮。

QCommandLinkButton::QCommandLinkButtonconst QString &textconst QString &descriptionQWidget *parent = 0

构造一个父对象为parent、文本为text和描述文本为description的命令链接按钮。

void QButton::clicked()[signal]

当单击该按钮时,发射信号。

 void QButton::pressed()[signal]

当按下该按钮时,发射这个信号。

void QButton::released()[signal]

当释放该按钮时,发射这个信号。

void QButton::setTextconst QString &

设置改按钮上显示的文本。

QString QButton::text()cosnt

返回按钮上显示的文本。

六、QDialogButtonBox组件

1QDialogButtonBox组件简介

    QDialogButtonBox按钮盒,可以快速地布置一组按钮,有水平和垂直样式。

2QDialogButtonBox组件属性

    QDialogButtonBox组件属性设置选项:

    A、name:该控件对应源代码中的名称。

    B、font:设置text的字体。

    C、enabled:该控件是否可用。

    D、centerButtons:ButtonBox中的按钮是否居中布局,默认值为false。

    E、orientation:按钮布局方向,Qt提供QT::Horizontal和QT::Vertical两种。

    F、standardButtons:标准按钮集合。

    QDialogButtonBox::Ok

    QDialogButtonBox::Open

    QDialogButtonBox::Save

    QDialogButtonBox::Cancel

    QDialogButtonBox::Close

    QDialogButtonBox::Discard

    QDialogButtonBox::Apply

    QDialogButtonBox::Reset

    QDialogButtonBox::RestoreDefaults

    QDialogButtonBox::Help

    QDialogButtonBox::SaveAll

    QDialogButtonBox::Yes

    QDialogButtonBox::YesToAll

    QDialogButtonBox::No

    QDialogButtonBox::NoToAll

    QDialogButtonBox::Abort

    QDialogButtonBox::Retry

    QDialogButtonBox::Ignore

    QDialogButtonBox::NoButton

3QDialogButtonBox组件常用成员函数

QDialogButtonBox组件常用成员函数:

QDialogButtonBox::QDialogButtonBoxQWidget *parent = 0

构造一个按钮盒,父对象为parent。

QDialogButtonBox::QDialogButtonBoxQT::Orientation orientationQWidget *parent = 0

构造一个按钮盒,父对象为parent,排列方向为orientation,并且包含buttons。

QDialogButtonBox::QDialogButtonBoxStandardButton buttonsQT::Orientation orientation = QT::HorizontalQWidget *parent = 0

构造一个按钮盒,父对象为parent,排列方向为orientation。

void QDialogButtonBox::accepted()[signal]

当单击按钮盒里的定义为AcceptRole和YesRole的按钮时,发射信号。

void QDialogButtonBox::addButtonQAbstractButton *buttonButtonRole role

向按钮盒里添加按钮button,定义按钮button的角色为role,如果role是无效的,则不添加按钮,如果按钮已添加,移除并在次添加为新角色。

QPushButton *QDialogButtonBox::addButtonStandarButton button

向按钮盒中添加一个标准按钮button,并返回标准按钮。如果按钮无效,不添加,返回0.

QPushButton *QDialogButtonBox::addButtonconst QString &textButtonRole role

创建一个按钮的文本为text,以指定角色添加到按钮盒,并返回相应的按钮,如果role是无效的,则不创建,返回0.

void QDialogButtonBox::clear()

清空按钮盒里的所有按钮。

void QDialogButtonBox::clickedQAbstractButton *button[signal]

当单击按钮盒里的按钮button时,发射这个信号。

void QDialogButtonBox::helpRequested()[signal]

当单击按钮盒里的定义为HelpRole的按钮时,发射这个信号。

void QDialogButtonBox::rejected()[signal]

当单击按钮盒里定义为RejectRole和NoRole的按钮时,发射这个信号。

void QDialogButtonBox::removeButtonQAbstractButton *button

移除按钮盒里的按钮Button,但是不删除,设置它的父母为0

void setStandardButtons ( StandardButtons buttons )

设置按钮盒中的按钮,使用|设置多个按钮。

void setOrientation ( Qt::Orientation orientation )

设置按钮盒的样式,分为垂直和水平样式

QPushButton * button ( StandardButton which ) const

根据StandardButton返回按钮盒中的按钮

4、QDialogButtonBox实例

#include <QtGui/QApplication>
#include <QDialogButtonBox>
#include <QPushButton>
#include <QWidget>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    QDialogButtonBox *button = new QDialogButtonBox(&w);
    button->setStandardButtons(QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
    button->button(QDialogButtonBox::Apply)->setText("apply");
    w.show();
    
    return a.exec();
}