32.QButtonGroup
作者:互联网
1 创建和添加按钮
QButtonGroup名为按钮组,作用为按钮的容器,在其中可以添加按钮,它本身不具备可视化的效果
QButtonGroup的父类为QObject
首先我们创建四个按钮
1.1 创建按钮组
1.2 添加按钮 addButton()
此处注意addButton()方法只能由一个参数,添加按钮时需要一个一个添加
现在我们添加完按钮组,已经能达到两组互斥的效果了
2 查看按钮
2.1 查看按钮组中所有的按钮 buttons()
我们可以看到组中的两个按钮
2.2 根据ID获取对应按钮 button(ID)
现在我们没有设置ID,但我们想获取ID为1对应的按钮
现在我们将两个按钮分别设置为1和2,然后再获取ID为1和2的按钮
现在我们不想设置ID,但还想使用button()获取按钮,我们发现每次创建按钮后会有默认的ID,ID从-2开始,我们现在获取ID为-2,-3的按钮
-2的那个也就是显示的第一行是 男 按钮
-3的那个也就是显示的第二行是 女 按钮
如果该按钮组内继续设置按钮,则ID从-4,-5这样一直向下排
2.3 获取当前选中的按钮 CheckedButton()
我们首先在所有按钮都没被选中的情况下获取选中的按钮
然后我们把checkedButton()连接到 男 按钮的槽函数上
运行后我们点击一次 男 按钮
第二次点击 男 按钮
3 从按钮组中移除按钮 removeButton()
我当前按钮组中有男 女两个按钮
此时我们男女按钮是不可以全部选中的
现在我们将 女 按钮移出按钮组
现在我们的男女按钮可以同时选中
我们现在看一下按钮组中的所有按钮
发现 女 按钮已经不在按钮组中了
4 ID操作
4.1 设置 setId(QAbstracButton,int)
在添加按钮的时候就可以顺便设置一个ID
此处函数的功能与之前的ID功能相同
4.2 根据指定按钮返回其ID id(QAbstracButton)
此时我们先设置 男 按钮ID为1,女按钮ID为2
初始状态下没有任何按钮被选中,返回-1
我们现在再搞一个按钮,点击后获取被选中按钮的ID
- 一般在项目中使用的时候也是会RadioButton配合QPushButton使用,在用于选择后点击确定,才作数,实时获取一般用不到
初始状态
我们选中男再点击一下左上角按钮
选中女后再点击一下左上角的按钮
5 独占设置
在同一父控件下使用RadioButton时是默认有互斥性的,现在我们将他们设为一组并将消除一组中RadioButton的互斥性
我们现在创建四个按钮 男 女 是 否 ,之后将这四个按钮分为两组
初始状态
我们点击男女,发现他们是不可以被同时选中的
5.1 设置 setExclusive(bool)
此时我们发现男女两个按钮可以被同时选中了
我们再将是否按钮这一组设置为True
发现他们还是互斥的,不能被同时选中
5.2 获取 exclusive()
6 信号使用
现在我们依然用上面的案例,把四个代码分成两组,我们现在分别设置四个按钮的ID
- 注:btn3与btn4的ID也可以设置为1和2,由于在不同的组,所以ID不会冲突
以下信号括号内并非是参数,而是可以发送的数据,可发送的数据为按钮或按钮的ID,传递的数据一次只能有一个
我们先搞一个可以接收数据的槽函数
6.1 按钮组中按钮被点击信号 buttonClicked(int/QAbstractionButton)
6.1.1 传递按钮
默认情况下会传递按钮
运行后我点击一下按钮男,再点击一下按钮女
6.1.2 传递ID
运行后我点一下按钮男,再点击一下按钮女
6.2 按钮组中按钮被按下时信号 buttonPressed(int/QAbstractionButton)
6.2.1 传递按钮
默认情况下会传递按钮
运行后我按一下按钮男,再按一下按钮女
6.2.2 传递ID
运行后我按一下按钮男,再按一下按钮女
6.3 按钮组中的按钮被释放时信号 buttonReleased(int/QAbstractionButton)
6.3.1 传递按钮
默认情况下会传递按钮
运行后我按一下然后抬起按钮男,再按一下然后抬起按钮女
6.3.2 传递ID
运行后我按一下然后抬起按钮男,再按一下然后抬起按钮女
6.4 按钮组中被切换状态时信号 buttonToggled(QAbstractionButton,bool)
buttonToggled信号无法用在信号后加[int]的方式获取ID,但是它可以获取到按钮的选中状态
首先我们更改一下槽函数
我们将切换信号绑给槽函数
运行后我点击一下按钮男
- True 代表按钮男被选中
再点击一下按钮女
由于是切换状态时的信号,按钮男的状态由选中到未选中,按钮女的状态由未选中到选中,所以信号触发两次
如果我们在信号后不加[int]我们可以更改槽函数获取ID
经测试同样可用
标签:组中,32,QButtonGroup,我们,点击,选中,按钮,ID 来源: https://blog.csdn.net/potato123232/article/details/118788209