我生成如下复选框:
foreach(QString filt, types){
QCheckBox *checkbox = new QCheckBox(filt, this);
checkbox->setChecked(true);
vbox->addWidget(checkbox);
}
我需要按名称访问这些复选框,但是它们的名称都一样吗?
我需要阅读他们显示的文字。
我该怎么办?
是否可以运行for循环并将i的值附加到复选框的末尾。那么实际上,该复选框将被称为checkbox [0],checkbox [1]等吗?
编辑:
我将代码更改为以下内容:
for(int i=0; i<types.count(); ++i)
{
QString filt = types[i];
*checkboxCount = *checkboxCount + 1;
QCheckBox *typecheckbox[i] = new QCheckBox(filt, this);
typecheckbox[i]->setChecked(true);
vbox->addWidget(typecheckbox[i]);
}
我认为这是一种动态命名复选框的方法,因此我可以遍历它们以从中获取文本值。
我收到此行
QCheckBox *typecheckbox[i] = new QCheckBox(filt, this);
上的错误“可变大小的对象可能未初始化”对解决方案/替代方法有何想法?
最佳答案
如果要稍后访问复选框,则可以按如下所示使用find children method:
QStringList myStringList;
QList<QCheckBox *> list = vbox->findChildren<QCheckBox *>();
foreach (QCheckBox *checkBox, list) {
if (checkBox->isChecked())
myStringList.append(checkBox->text());
}