我生成复选框如下:
foreach(QString filt, types){
QCheckBox *checkbox = new QCheckBox(filt, this);
checkbox->setChecked(true);
vbox->addWidget(checkbox);
}我需要访问这些复选框的名称,但它们都被称为相同的?
我需要看他们展示的文字。
我该怎么做呢?
是否可以运行for循环并将i的值附加到复选框的末尾。因此,实际上,复选框将被称为复选框、复选框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);
对解决方案/替代方法有什么想法吗?
发布于 2014-07-21 01:19:08
如果希望稍后访问这些复选框,只需按以下方式使用找子法:
QStringList myStringList;
QList<QCheckBox *> list = vbox->findChildren<QCheckBox *>();
foreach (QCheckBox *checkBox, list) {
if (checkBox->isChecked())
myStringList.append(checkBox->text());
}https://stackoverflow.com/questions/24855077
复制相似问题