provides a container to organize groups of button widgets. 添加移除btn,查看选中的btn,找到想找的btn
函数描述
void addButton(QAbstractButton *button, int id = -1)添加button,且放置idvoid removeButton(QAbstractButton *button)移除QAbstractButton *QButtonGroup::checkedButton() constReturns the button group’s checked button, or 0 if no buttons are checked.int QButtonGroup::checkedId() const返回选中的button的id,没有则-1QAbstractButton * button(int id)const返回你下面还要找的buttonbuttons() const返回全部的zibuttonsetExclusive(true)属性,可以设置为互斥
sinals
void buttonClicked(QAbstractButton *button)
void buttonClicked(
int id)
void buttonPressed(QAbstractButton *button)
void buttonPressed(
int id)
void buttonReleased(QAbstractButton *button)
void buttonReleased(
int id)
void buttonToggled(QAbstractButton *button,
bool checked)
void buttonToggled(
int id,
bool checked)
/*
* QButtonGroup have add remove but select one only
*
*/
mywidget::mywidget()
{
setWindowTitle(
"my widget test");
QVBoxLayout *layout=
new QVBoxLayout(
this);
pbtn_group=
new QButtonGroup;
QCheckBox *pradio_btn1=
new QCheckBox(
"radio1");
QCheckBox *pradio_btn2=
new QCheckBox(
"radio2");
QCheckBox *pradio_btn3=
new QCheckBox(
"radio3");
QCheckBox *pradio_btn4=
new QCheckBox(
"radio4");
pbtn_group->addButton(pradio_btn1,
0);
pbtn_group->addButton(pradio_btn2,
1);
pbtn_group->addButton(pradio_btn3,
2);
pbtn_group->addButton(pradio_btn4,
3);
pradio_btn1->setChecked(
true);
pradio_btn2->setChecked(
true);
pbtn_group->setExclusive(
true);
// connect(pbtn_group,SIGNAL(buttonClicked(int)),
this,SLOT(reaction(int)));
//use the another way to connect
connect(pbtn_group, QOverload<int>::
of(&
QButtonGroup::buttonClicked),[&](int i){
qDebug
()<<"selct is :"<<i<<' '<<pbtn_group->checkedButton
()->text();
pbtn_group->button
(2)->setChecked(
true);
});
layout->addWidget(pradio_btn1);
layout->addWidget(pradio_btn2);
layout->addWidget(pradio_btn3);
layout->addWidget(pradio_btn4);
this->setFixedSize(
300,
300);
this->show();
}
/*
* 新技能..................
* connect(buttonGroup, QOverload<int, bool>::
of(&
QButtonGroup::buttonToggled),
* [=](int id, bool checked){ });
*/
void mywidget::reaction(int i)
{
/*
*
1.输出被选中的button的id和text
* pbtn_group->checkedId();
* pbtn_group->checkedButton
()->text();
*
2.改变选中的button,id=
2
*/
qDebug
()<<"selct is :"<<i<<' '<<pbtn_group->checkedButton
()->text();
pbtn_group->button
(2)->setChecked(
true);
}
设置
功能描述
void setAutoDefault(bool)void setDefault(bool)默认的按钮void setFlat(bool)可以改变其中一些颜色属性void setMenu(QMenu *menu)菜单
slots
void showmenu()
事件
virtual bool event(QEvent *e)
virtual void focusInEvent(QFocusEvent *e)
virtual void focusOutEvent(QFocusEvent *e)
virtual void keyPressEvent(QKeyEvent *e)
virtual void paintEvent(QPaintEvent *)
工具按钮,具备菜单等等
void setMenu(QMenu
* menu)
设置按钮的弹出菜单。和QPushButton用法类似,详见:Qt之QPushButton
void setPopupMode(ToolButtonPopupMode mode)
设置弹出菜单的方式,默认情况下,设置为DelayedPopup(延迟弹出)。
枚举QToolButton
::ToolButtonPopupMode:
void setToolButtonStyle(Qt
::ToolButtonStyle style)
void setArrowType(Qt
::ArrowType type)
设置按钮是否显示一个箭头,而不是一个正常的图标。这将显示一个箭头作为QToolButton的图标。
默认情况下,这个属性被设置为Qt
::NoArrow。
单选框
QCheckBox
复选框,且可以开启三种状态,主要用来多选和三种状态,它有一个信号statechanged() 找它的状态可以isChecked(),checkstate()
功能设置
函数描述
void setCheckState(Qt::CheckState state)void setTristate(bool y = true)开启三种选择状态