Qt开发:Qt Widgets模块——QButtonGroup类

QButtonGroup类提供了一个容器来组织按钮小部件组。

头文件:#include <QButtonGroup>

qmake:QT += widgets

继承:QObject

QButtonGroup提供了一个抽象容器,可以在其中放置按钮小部件。 它不提供此容器的可视化表示(请参阅容器小部件的QGroupBox),而是管理组中每个按钮的状态。

独占按钮组关闭除已被点击的按钮之外的所有可检查(切换)按钮。 默认情况下,按钮组是独占的。 按钮组中的按钮通常是可检查的QPushButtons,QCheckBoxes(通常用于非专属按钮组)或QRadioButtons。 如果您创建专属按钮组,则应确保组中的其中一个按钮最初被检查; 否则,该组将最初处于未检查按钮的状态。

可以使用addButton()将按钮添加到组中,并使用removeButton()将其删除。 如果该组是独占的,则当前选中的按钮与checkedButton()一起可用。 如果点击一个按钮,会发出buttonClicked()信号; 对于排他组中的可检查按钮,这意味着该按钮已被检查。 buttons()返回组中按钮的列表。

另外,QButtonGroup可以在整数和按钮之间进行映射。 您可以使用setId()将一个整数id分配给一个按钮,并使用id()检索它。 当前选中的按钮的id对于checkedId()是可用的,并且有一个重载信号buttonClicked(),它发出按钮的id。 Q-1被QButtonGroup保留为“没有这样的按钮”。 映射机制的目的是简化用户界面中枚举值的表示。



一、属性

1、exclusive : bool

该属性保持按钮组是否是独占的。

如果此属性为true,则在任何给定时间只能检查组中的一个按钮。 用户可以点击任何按钮来检查它,并且该按钮将替换现有的按钮作为组中的选中按钮。

在专属组中,用户不能通过点击来取消当前选中的按钮; 相反,组中的另一个按钮必须被点击以设置该组的新选中按钮。

默认情况下,该属性为true。

访问函数;

bool exclusive() const
void setExclusive(bool)



二、成员函数

1、QButtonGroup::QButtonGroup(QObject *parent = Q_NULLPTR)

用给定的父项构造一个新的空按钮组。


2、QButtonGroup::~QButtonGroup()

销毁按钮组。


3、void QButtonGroup::addButton(QAbstractButton *button, int id = -1)

将给定的按钮添加到按钮组。 如果id为-1,则将为该按钮分配一个id。 自动分配的ID保证为负数,从-2开始。 如果您正在分配自己的ID,请使用正值来避免冲突。


4、QAbstractButton *QButtonGroup::button(int id) const

返回具有指定ID的按钮,如果不存在此按钮,则返回0。

这个函数是在Qt 4.1中引入的。


5、[signal] void QButtonGroup::buttonClicked(QAbstractButton *button)

点击给定按钮时会发出此信号。 当第一次按下然后释放按钮时,当它的快捷键被键入时,或者以编程方式调用QAbstractButton :: click()或QAbstractButton :: animateClick()时,会单击一个按钮。

注意:此类中的信号buttonClicked已被重载。 要使用函数指针语法连接到此函数,您必须在静态转换中指定信号类型,如下例所示:

connect(buttonGroup, static_cast<void(QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonClicked),
      [=](QAbstractButton *button){ /* ... */ });


6、[signal] void QButtonGroup::buttonClicked(int id)

点击具有给定ID的按钮时会发出此信号。

注意:此类中的信号buttonClicked已被重载。 要使用函数指针语法连接到此函数,您必须在静态转换中指定信号类型,如下例所示:

  connect(buttonGroup, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked),
      [=](int id){ /* ... */ });


7、[signal] void QButtonGroup::buttonPressed(QAbstractButton *button)

按下给定按钮时发出此信号。

注意:此类中的信号buttonPressed被重载。 要使用函数指针语法连接到此函数,您必须在静态转换中指定信号类型,如下例所示:

  connect(buttonGroup, static_cast<void(QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonPressed),
      [=](QAbstractButton *button){ /* ... */ });

这个函数是在Qt 4.2中引入的。


8、[signal] void QButtonGroup::buttonPressed(int id)

当具有给定ID的按钮被按下时,该信号被发射。

注意:此类中的信号buttonPressed被重载。 要使用函数指针语法连接到此函数,您必须在静态转换中指定信号类型,如下例所示:

  connect(buttonGroup, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonPressed),
      [=](int id){ /* ... */ });

这个函数是在Qt 4.2中引入的。


9、[signal] void QButtonGroup::buttonReleased(QAbstractButton *button)

当给定的按钮被释放时,该信号被发射。

注意:此类中的信号buttonReleased被重载。 要使用函数指针语法连接到此函数,您必须在静态转换中指定信号类型,如下例所示:

  connect(buttonGroup, static_cast<void(QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonReleased),
      [=](QAbstractButton *button){ /* ... */ });

这个函数是在Qt 4.2中引入的。


10、[signal] void QButtonGroup::buttonReleased(int id)

当具有给定ID的按钮被释放时,该信号被发射。

注意:此类中的信号buttonReleased被重载。 要使用函数指针语法连接到此函数,您必须在静态转换中指定信号类型,如下例所示:

  connect(buttonGroup, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonReleased),
      [=](int id){ /* ... */ });

这个函数是在Qt 4.2中引入的。


11、[signal] void QButtonGroup::buttonToggled(QAbstractButton *button, bool checked)

当给定的按钮被切换时,该信号被发射。 如果按钮被选中,则检查为true;如果未选中该按钮,则检查为false。

注意:此类中的信号buttonToggled超载。 要使用函数指针语法连接到此函数,您必须在静态转换中指定信号类型,如下例所示:

  connect(buttonGroup, static_cast<void(QButtonGroup::*)(QAbstractButton *, bool)>(&QButtonGroup::buttonToggled),
      [=](QAbstractButton *button, bool checked){ /* ... */ });

这个函数是在Qt 5.2中引入的。


12、[signal] void QButtonGroup::buttonToggled(int id, bool checked)

当具有给定ID的按钮被切换时,该信号被发射。 如果按钮被选中,则检查为true;如果未选中该按钮,则检查为false。

注意:此类中的信号buttonToggled超载。 要使用函数指针语法连接到此函数,您必须在静态转换中指定信号类型,如下例所示:

  connect(buttonGroup, static_cast<void(QButtonGroup::*)(int, bool)>(&QButtonGroup::buttonToggled),
      [=](int id, bool checked){ /* ... */ });

这个函数是在Qt 5.2中引入的。


13、QList<QAbstractButton *> QButtonGroup::buttons() const

返回按钮组的按钮列表。 这可能是空的。


14、QAbstractButton *QButtonGroup::checkedButton() const

返回按钮组的选中按钮,如果没有按钮被选中,则返回0。


15、int QButtonGroup::checkedId() const

返回checkedButton()的id,如果没有选中按钮,则返回-1。

这个函数是在Qt 4.1中引入的。


16、int QButtonGroup::id(QAbstractButton *button) const

返回指定按钮的ID,如果不存在此按钮,则返回-1。

这个函数是在Qt 4.1中引入的。


17、void QButtonGroup::removeButton(QAbstractButton *button)

从按钮组中删除给定的按钮。


18、void QButtonGroup::setId(QAbstractButton *button, int id)

设置指定按钮的ID。 请注意,ID不能是-1。

这个函数是在Qt 4.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()`方法将被调用,并显示选中的按钮文本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值