Есть ли способ динамически добавлять чекбоксы, чтобы я мог получить к ним доступ и к их контрольному состоянию из области их определения?
Я хочу добавлять флажки динамически. Я нашел некоторые ссылки полезными, но у каждой из них есть проблема, которую я не могу решить.
например, по этой ссылке мы можем создать и добавить 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];
}