QT开发(七)——QT按钮组件
QT中有六种按钮组件,分别是按压按钮QPushButton、工具按钮QToolButton、单选按钮QRadioButton、多选按钮QCheckBox、命令链接按钮QCommandLinkButton、按钮盒QButtonBox。
一、QPushButton组件
1、QPushButton组件简介
QPushButton组件用于接受用户点击事件,能够显示提示字符串,是功能性组件,需要父组件作为容器,能够在父组件中进行定位,用于执行命令或触发事件。
QPushButton的类继承如下:
QPushButton :public QAbstractButton :pubic QWidget :public QObject, public QPaintDevice
2、QPushButton组件属性
QPushButton 组件属性设置选项:
A、name:组件对应源代码中的名字。
B、text:组件对应图形界面中显示的名字。
C、font:设置text的字体。
D、enabled:组件是否可用。
3、QPushButton组件常用成员函数
QPushButton::QPushButton(const QString &text,QWidget *parent,const char *name = 0);
构造一个名称为name,父对象为parent并且文本为text的按压按钮。
void QAbstractButton::setText(const 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组件
1、QRaidoButton组件简介
QRaidoButton单选按钮,用于提供两个或多个互斥选项。
2、QRaidoButton组件属性
QRaidoButton单选按钮属性设置选项:
A、name:组件对应源代码中所显示的名字。
B、text:组件对应图形界面中所显示的名字。
C、font:设置text字体。
D、enabled:组件是否可用,可用为true,不可用为false。
E、checked:用来设置或返回是否选中单选按钮,选中为true,未选中为false。
3、QRaidoButton组件常用成员函数:
QRaidoButton::QRadioButton(const QString &text,QWidget *parent,const char *name = 0)
构造一个名称为name、父对象为parent并且文本为text的单选按钮。
bool QRadioButton::isChecked()const
返回是否选中单选按钮,选中时返回true,没有选中时返回false。
void QAbstractButton ::setText(const QString &)
设置组件上显示的文本。
QString QAbstractButton ::text()const
返回该按钮上显示的文本。
void QAbstractButton ::stateChanged(int state)[signal]
当更改checked属性值时,将发射信号。
void QRadioButton::setChecked(bool check)[virtual slot]
设置单选按钮是否被选中为checked。
4、QRadioButton实例
Widget.h文件: #ifndef WIDGET_H #define WIDGET_H #include#include #include 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" #includeWidget::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#include "widget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QButtonGroup group; Widget w; w.show(); return a.exec(); }
三、QCheckBox组件
1、QCheckBox组件简介
QCheckBox复选框,复选框提供多选多。
QCheckBox有三种状态:checked、unchecked和PartiallyChecked。
2、QCheckBox组件属性
QCheckBox复选框属性设置选项:
A、name:组件对应源代码中所显示的名字。
B、text:组件对应图形界面中所显示的名字。
C、font:设置text字体。
D、enabled:组件是否可用,可用为true,不可用为false。
E、checked:用来设置或返回是否选中单选按钮,选中为true,未选中为false。
3、QCheckBox组件常用成员函数
QCheckBox::QCheckBox(const QString &text,QWidget *parent,const char *name = 0)
构造一个名称为name、父对象为parent并且文本为text的复选框。
bool QCheckBox::isChecked()const
选中复选框,返回true,否则返回false。
void QAbstractButton ::setText(const QString &)
设置组件上显示的文本。
QString QAbstractButton ::text()const
返回组件上显示的文本。
void QAbstractButton ::stateChange(int state)[signal]
当更改checked属性时,将发射这个信号。
void QCheckBox::setChecked(bool check)[slot]
设置复选框是否选中,状态为check的值。
4、QCheckBox实例
#include#include #include #include 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组件
1、QToolButton组件简介
QToolButton工具按钮,是一种用于命令或者选项的可以快速访问的按钮,通常在ToolBar里面。工具按钮通常显示的是图标,而不是文本标签。ToolButton支持自动浮起。在自动浮起模式中,按钮只有在鼠标指向它的时候才绘制三维的框架。
2、QToolButton组件属性
QToolButton工具按钮设置选项:
A、name:组件对应源代码中的名称。
B、text:工具按钮标签文本。
C、font:设置工具按钮标签的字体。
D、autoRaise:自动浮起是否生效。
E、iconSet:提供显示在按钮上的图标的图标集。
F、on:工具按钮是否为开。
G、textLabel:工具按钮自动提示文本。
H、usesTextLabel:自动提示文本textLabel是否工作,默认为false。
3、QToolButton组件常用成员函数
QToolButton::QToolButton(QWidget *parent,const char *name = 0)
构造一个名字为name,父对象为parent的ToolButton。
QToolButton::QToolButton(const QIconset &iconSet,const QString &textLabel,const QString &grouptext,QObject *receiver,const char *slot,QToolBar *parent,const char *name = 0)
构造一个名称为name,父对象为parent(必须为QToolBar)的工具按钮。工具按钮将显示iconSet,工具提示为textLabel,状态条信息为grouptext,同时会将工具按钮链接到receiver对象的槽函数。
QToolBButton::QToolButton(ArrowType type,QWidget *parent,const char *name = 0)
把工具按钮构造成箭头按钮,type定义了箭头的方向,可用的值有LeftArrow、RightArrow、UpArrow、DownArrow。
void QToolButton::setAutoRaise(bool enable)
根据参数enable值设置按钮是否可自动浮起。
void QToolButton::setIcon(const QIconSet &)
设置显示在工具按钮上的图标。
void QToolButton::setOn(bool enable)[virtual slot]
设置按钮是否为开,enable等于true则设置为开,否则设置为关。
void QToolButton::setTextLabel(const 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#include #include #include 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组件
1、QCommandLinkButton组件简介
QCommandLinkButton命令链接按钮,继承自QPushButton,用于在互斥选项中选择一项,QCommandLinkButton除带有正常的按钮上的文字描述文本外,默认情况下,将携带一个箭头图标,表明按下按钮将打开另一个窗口或页面。
2、QCommandLinkButton组件属性
QCommandLinkButton组件属性设置选项:
A、name:组件对应源代码中的名称。
B、text:组件对应图形界面中所显示的标签。
C、font:设置text的字体。
D、enabled:组件是否可用。
E、description:一个描述性的标签,以配合按钮上的文字。
3、QCommandLinkButton组件常用成员函数
QCommandLinkButton::QCommandLinkButton(QWidget *parent = 0)
构造一个父对象为parent的命令链接按钮。
QCommandLinkButton::QCommandLinkButton(const QString &text,QWidget *parent = 0)
构造一个父对象为parent、文本为text的命令链接按钮。
QCommandLinkButton::QCommandLinkButton(const QString &text,const QString &description,QWidget *parent = 0)
构造一个父对象为parent、文本为text和描述文本为description的命令链接按钮。
void QButton::clicked()[signal]
当单击该按钮时,发射信号。
void QButton::pressed()[signal]
当按下该按钮时,发射这个信号。
void QButton::released()[signal]
当释放该按钮时,发射这个信号。
void QButton::setText(const QString &)
设置改按钮上显示的文本。
QString QButton::text()cosnt
返回按钮上显示的文本。
六、QDialogButtonBox组件
1、QDialogButtonBox组件简介
QDialogButtonBox按钮盒,可以快速地布置一组按钮,有水平和垂直样式。
2、QDialogButtonBox组件属性
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
3、QDialogButtonBox组件常用成员函数
QDialogButtonBox组件常用成员函数:
QDialogButtonBox::QDialogButtonBox(QWidget *parent = 0)
构造一个按钮盒,父对象为parent。
QDialogButtonBox::QDialogButtonBox(QT::Orientation orientation,QWidget *parent = 0)
构造一个按钮盒,父对象为parent,排列方向为orientation,并且包含buttons。
QDialogButtonBox::QDialogButtonBox(StandardButton buttons,QT::Orientation orientation = QT::Horizontal,QWidget *parent = 0)
构造一个按钮盒,父对象为parent,排列方向为orientation。
void QDialogButtonBox::accepted()[signal]
当单击按钮盒里的定义为AcceptRole和YesRole的按钮时,发射信号。
void QDialogButtonBox::addButton(QAbstractButton *button,ButtonRole role)
向按钮盒里添加按钮button,定义按钮button的角色为role,如果role是无效的,则不添加按钮,如果按钮已添加,移除并在次添加为新角色。
QPushButton *QDialogButtonBox::addButton(StandarButton button)
向按钮盒中添加一个标准按钮button,并返回标准按钮。如果按钮无效,不添加,返回0.
QPushButton *QDialogButtonBox::addButton(const QString &text,ButtonRole role)
创建一个按钮的文本为text,以指定角色添加到按钮盒,并返回相应的按钮,如果role是无效的,则不创建,返回0.
void QDialogButtonBox::clear()
清空按钮盒里的所有按钮。
void QDialogButtonBox::clicked(QAbstractButton *button)[signal]
当单击按钮盒里的按钮button时,发射这个信号。
void QDialogButtonBox::helpRequested()[signal]
当单击按钮盒里的定义为HelpRole的按钮时,发射这个信号。
void QDialogButtonBox::rejected()[signal]
当单击按钮盒里定义为RejectRole和NoRole的按钮时,发射这个信号。
void QDialogButtonBox::removeButton(QAbstractButton *button)
移除按钮盒里的按钮Button,但是不删除,设置它的父母为0
void setStandardButtons ( StandardButtons buttons )
设置按钮盒中的按钮,使用|设置多个按钮。
void setOrientation ( Qt::Orientation orientation )
设置按钮盒的样式,分为垂直和水平样式
QPushButton * button ( StandardButton which ) const
根据StandardButton返回按钮盒中的按钮
4、QDialogButtonBox实例
#include#include #include #include 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(); }