c++ - Qt - 遍历 QRadioButtons

标签 c++ qt iterator qobject qradiobutton

我正在为学校开展一个小组项目。我组的一个成员创建了一个有大约 75 个单选按钮的窗口。我想在按下按钮时强制所有这些都“清除”或“未选中”。

有人知道这样做的好方法吗?我一直在研究 QObjectList 但我不能简单地做 QObjectList *children = new QObjectList(ui->groupBox->children());并使用 for 循环循环它们,因为 QObjectList 似乎没有 next 方法..

我也试过做类似的事情

QObjectList *children = new QObjectList(ui->groupBox->children());
for(QObject *iterator = children.first(); iterator!=NULL; children.pop_front()){
    iterator = children.first();
    iterator->at(0)->setCheckabled(false);
}

但是因为迭代器是一个 QObject,所以 setCheckable 不像单选按钮那样存在。

想法/提示将不胜感激。

编辑:我什至会提示一种循环访问具有相似名称的变量的方法。例如,我所有的单选按钮都被命名为 RadioButton_1、RadioButton_2 等。

最佳答案

使用 QButtonGroup , 将其设置为独占(然后一次只会检查一个单选按钮)。它还会为您提供当前选中的按钮,以防您也想取消选中它。 (根本没有选中的按钮)。

另请注意,您可能想要修改的是“checked”属性,而不是“checkable”(其中 false 表示按钮根本无法选中/取消选中)。

关于c++ - Qt - 遍历 QRadioButtons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5598487/

相关文章:

c++ - const-reference 限定成员函数

c++ - C++ 中的二叉树基础知识

c++ - 在类中存储引用

c++ - qwebengineview qt5.9如何提取数据

c++ - Qt 应用程序 : How to create standalone executable file for Windows (& Mac) from Mac?

c++ - 继续运行程序直到用户输入退出

c++ - 如何在程序继续的同时在两部分代码之间设置时间间隔或延迟? C++

c++ - 当容器定义为 const 时,带有自定义迭代器的自定义容器不起作用

java - 迭代器添加了错误的地址

c++ - 什么是单遍算法