但行好事,莫问前程

button

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::ToolButtonPopupModevoid 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) 开启三种选择状态
posted @ 2018-08-08 15:48  专业路过  阅读(550)  评论(0编辑  收藏  举报