QButtonGroup和QActionGroup的简单小小使用

1、将在界面上布局好的buttons(并设置checkable属性为true)通过void QButtonGroup::addButton(QAbstractButton *button,int id)添加到QButtonGroup(并设置execlusive的属性为true:默认属性值为true)中,即可将添加到QButtonGroup中的buttons设置为互斥(即添加QButtonGroup中的按钮同时只有一个能被按下)。

2、信号 buttonClicked(...):鼠标左键按下并弹起才会触发;

      信号buttonPressed(...):鼠标左键按下即可触发;

      信号buttonReleased(...):鼠标左键松开即可触发;

      从上面的三个信号中可获得按下按钮的地址或者ID。

Demo:

    QHBoxLayout *pBtnLayout = new QHBoxLayout(this);
    QPushButton *pOkBtn = new QPushButton(QString("OK"));
    QPushButton *pCancelBtn = new QPushButton(QString("Cancel"));
    QPushButton *pNewBtn = new QPushButton(QString("New"));
    pOkBtn->setCheckable(true);     //若button的checkable没有设置为true,互斥会不起效果
    pOkBtn->setChecked(true);       //若不设置,启动程序会看到没有button按下
    pCancelBtn->setCheckable(true);
    pNewBtn->setCheckable(true);
    
    pBtnLayout->addWidget(pOkBtn);
    pBtnLayout->addWidget(pCancelBtn);
    pBtnLayout->addWidget(pNewBtn);

    QButtonGroup *pBtnGroup = new QButtonGroup(this);
    pBtnGroup->setExclusive(true);//可不必设置,默认exclusive属性为true
    pBtnGroup->addButton(pOkBtn,BTN_OK);
    pBtnGroup->addButton(pCancelBtn,BTN_CANCEL);
    pBtnGroup->addButton(pNewBtn,BTN_NEW);
    
    connect(pBtnGroup,SIGNAL(buttonClicked(int)),this,SLOT(OnBtnGroupClicked(int)));//连接信号和槽

    

        //QActionGroup的小小使用    
      QToolBar *pToolBar = new QToolBar(QString("Test"),this);
//    pToolBar->setToolButtonStyle(....) ;设置文字在图标的位置
    QStringList ActionTextList;  //存储action的标签的list
    ActionTextList<<"Ok"<<"Cancel"<<"New";
    for(int i = 0,j = ActionTextList.count();i<j;i++)
    {
        m_ToolBarActionList.append(new QAction(QString(ActionTextList.at(i)),pToolBar));
        m_ToolBarActionList.at(i)->setCheckable(true);
    }
    m_ToolBarActionList.at(0)->setChecked(true);
    pToolBar->addActions(m_ToolBarActionList);
//设置Actions之间的互斥属性
    QActionGroup *pToolBarActionGroup = new QActionGroup(pToolBar);
//   pToolBarActionGroup->setExclusive(true);  默认为true
    for(int i = 0,j = m_ToolBarActionList.count();i<j;i++)
        pToolBarActionGroup->addAction(m_ToolBarActionList.at(i));
//    for(auto pAction : ToolBarActionList)             //C++11 新特性VS2008暂不支持
//        pToolBarActionGroup->addAction(pAction);
    connect(pToolBar,SIGNAL(actionTriggered(QAction*)),this,SLOT(OnToolBarActionTriggered(QAction*)));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值