QButtonGroup
provides a container to organize groups of button widgets.
添加移除btn,查看选中的btn,找到想找的btn
函数 | 描述 |
---|---|
void addButton(QAbstractButton *button, int id = -1) | 添加button,且放置id |
void removeButton(QAbstractButton *button) | 移除 |
QAbstractButton *QButtonGroup::checkedButton() const | Returns the button group’s checked button, or 0 if no buttons are checked. |
int QButtonGroup::checkedId() const | 返回选中的button的id,没有则-1 |
QAbstractButton * button(int id)const | 返回你下面还要找的button |
buttons() const | 返回全部的zibutton |
setExclusive(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);
}
QPushButton
设置
功能 | 描述 |
---|---|
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 *)
QToolButton
工具按钮,具备菜单等等
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。
QRadioButton
单选框
QCheckBox
复选框,且可以开启三种状态,主要用来多选和三种状态,它有一个信号statechanged()
找它的状态可以isChecked(),checkstate()
功能设置
函数 | 描述 |
---|---|
void setCheckState(Qt::CheckState state) | |
void setTristate(bool y = true) | 开启三种选择状态 |