QButtonGroup与QRadioButton的结合使用(Qt4中QButtonGroup类的使用)

QButtonGroup与QRadioButton的结合使用

QButtonGroup buttonGroup;//创建QButtonGroup对象
buttonGroup.addButton(ui.radioButton, 0);//添加radioButton按键,设置radioButton的ID
buttonGroup.addButton(ui.radioButton_2, 1);
buttonGroup.addButton(ui.radioButton_3, 2);
int nCheck = buttonGroup.checkedId();//返回被选中的ID


与Qt3相比Qt4中使用QButtonGroup类的区别

引用博客:用惯了qt3的朋友在使用qt4的时候肯定会有些不适应,包括构建界面,一些类的使用上,都有一些区别,总得来说Qt4在编程方式上设计的更加合理了,因为它把界面代码和操作代码完全的“隔离”开了,这样就避免了我们在后期修改界面然后编译的时候会重写操作代码带来的尴尬局面了。qt4除了在界面设置上做了优化,还对一些类做了精简。比如原来Qt3上面的QButtonGroup类,在qt4的designer上面就没有表现出来。只是保留了原来qt3的ButtonGroup。是不是qt4上面就没有QButtonGroup类了呢,当然不是了。在qt4的assistant上面介绍QButtonGroup时说到:“QButtonGroup provides an abstract container into which button widgets can be placed. It does not provide a visual representation of this container (see QGroupBox for a container widget), but instead manages the states of each of the buttons in the group”。其中提到QButtonGroup 提供的是一个放置按键控件的虚拟容器,但它不是个可视的容器。意思就是QButtonGroup 在qt4中变成了一个抽象的类。但是还可以像以前那样管理里面的按键。

用法如下:

       首先就是要先声明一个QButtonGroup类的对象:QButtonGroup *buttonGroup;

       接着在初始化或者构造函数里面给这个指针对象分配空间:buttonGroup = new QButtonGroup;

       然后就可以用addButton()函数把想要放置的按键添加进去:

buttonGroup->addButton( ui.pushButton0, 0 );
       buttonGroup->addButton( ui.pushButton1, 1 );

这样就能把想要的按键与它所对应的ID号对应起来了,每一次点击按键时QButtonGroup都会信号buttonClicked (int ID)发射,通过判断ID的槽与其连接,就可以实现按键的判断了。例如:

        connect( buttonGroup, SIGNAL(buttonClicked (int)), this, SLOT(buttonJudge(int)) );//连接信号和槽

最后在槽函数中判断按键就可以了。当然槽函数记得要事先声明。

例:

void IPhone::buttonJudge(int buttonID)
{
    if((modeFlag == defaultMode) || (modeFlag == hangupMode) || (modeFlag == inputMode))
{
   resetFont(1);
   if(modeFlag != inputMode)
    ui.lineEdit->clear();
   modeFlag = inputMode;
   switch (buttonID)
   {
      case 0: ui.lineEdit->insert("0"); break;
      case 1: ui.lineEdit->insert("1"); break;
      case 2: ui.lineEdit->insert("2"); break;
      case 3: ui.lineEdit->insert("3"); break;
      case 4: ui.lineEdit->insert("4"); break;
      case 5: ui.lineEdit->insert("5"); break;
      case 6: ui.lineEdit->insert("6"); break;
      case 7: ui.lineEdit->insert("7"); break;
      case 8: ui.lineEdit->insert("8"); break;
      case 9: ui.lineEdit->insert("9"); break;
    case 10: ui.lineEdit->insert("."); break;
    case 11: ui.lineEdit->insert("#"); break;
    default: break;
   }
}
}

这样就能实现简单按键判别了。






  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QButtonGroupQT一个方便的,用于管理一组互斥的按钮(例如,单选按钮)。通过将多个按钮添加到QButtonGroup,您可以实现只有一个按钮可以被选的效果。当一个按钮被选时,其他按钮将自动取消选择。 QButtonGroup提供了多个便利的方法,例如`addButton()`用于添加按钮,`checkedButton()`用于获取当前选的按钮,`buttonClicked()`用于处理按钮点击事件等。 以下是一个简单的示例,演示如何使用QButtonGroup: ```python from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayout, QButtonGroup import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout() # 创建一个QButtonGroup self.group = QButtonGroup() # 创建多个QRadioButton,并将它们添加到QButtonGroup rb1 = QRadioButton('Option 1') rb2 = QRadioButton('Option 2') rb3 = QRadioButton('Option 3') self.group.addButton(rb1) self.group.addButton(rb2) self.group.addButton(rb3) # 将QRadioButton添加到垂直布局 vbox.addWidget(rb1) vbox.addWidget(rb2) vbox.addWidget(rb3) # 为QButtonGroup绑定按钮点击事件 self.group.buttonClicked.connect(self.on_button_clicked) self.setLayout(vbox) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('QButtonGroup Example') self.show() def on_button_clicked(self, button): # 处理按钮点击事件 print('Button %s clicked' % button.text()) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 运行程序后,您可以看到三个单选按钮。当您单击其一个时,`on_button_clicked()`方法将被调用,并显示选的按钮文本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值