2

我生成复选框如下:

foreach(QString filt, types){
    QCheckBox *checkbox = new QCheckBox(filt, this);
    checkbox->setChecked(true);
    vbox->addWidget(checkbox);
}

我需要按名称访问这些复选框,但它们都被称为相同的?

我需要阅读他们显示的文字。

我该怎么办?

是否可以运行 for 循环并将 i 的值附加到复选框的末尾。所以实际上,复选框将被称为复选框 [0]、复选框 [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);

对解决方案/替代方法有什么想法吗?

4

1 回答 1

2

如果您想稍后访问复选框,您可以使用find children 方法,如下所示:

QStringList myStringList;
QList<QCheckBox *> list = vbox->findChildren<QCheckBox *>();
foreach (QCheckBox *checkBox, list) {
    if (checkBox->isChecked())
        myStringList.append(checkBox->text());
}
于 2014-07-21T01:19:08.880 回答