Есть ли способ динамически добавлять чекбоксы, чтобы я мог получить к ним доступ и к их контрольному состоянию из области их определения?

Я хочу добавлять флажки динамически. Я нашел некоторые ссылки полезными, но у каждой из них есть проблема, которую я не могу решить.

например, по этой ссылке мы можем создать и добавить QCheckBoxЭто динамически, но я не могу получить к ним доступ за пределами их определения (для).

И другой способ использует QListWidgetItem с setCheckState, но это очень большая проблема! когда я нажимаю на CheckState, он не замечает этого и просто сосредотачивается на Предмете, который сосредоточен на нем!!!! {в этих ссылках эта проблема представлена, но нет решения: это и это }

Есть ли способ динамически добавлять чекбоксы, чтобы я мог получить к ним доступ и к их контрольному состоянию из области их определения?

1 ответ

Решение

Вам нужно сохранять указатели на созданные вами флажки. Например добавить QVector<QCheckBox> checkBoxes; на ваш виджет, а затем добавить эти указатели на вектор.

Код результата может выглядеть так:

В шапке:

YourWidget : public QWidget {
....
QVector<QCheckBox*> checkboxes;
....

И в источнике:

for (int i = 0; i < 5; i++) {
    QCheckBox *box = new QCheckBox;
    layout->addWidget(box);
    checkboxes.append(box);
}

Итак, вы можете получить доступ к вашим чекбоксам: checkboxes[0]->setChecked(true); или что-то

И не забудьте освободить память, выделенную для флажков в деструкторе вашего виджета (вам не нужно делать это, если вы добавили их в макет)

for (int i = 0; i < checkboxes.size(); i++) {
    delete checkboxes[i];
}
Другие вопросы по тегам