Простой способ достичь своей цели - изменить цикл создания следующим образом:
// Add this to your widget's class declaration:
std::vector<QCheckBox*> checkBoxes;
, затем
for (auto& r : restaurantList) {
auto cb = new QCheckBox(r.GetName());
checkBoxes.push_back(cb);
connect(cb, &QCheckBox::stateChanged, this, &YourWidget::onCheckBoxClicked);
CTui->verticalLayout->addWidget(cb);
}
, затем добавить функцию-обработчик в YourWidget
(что бы это ни быломожет быть) так:
void YourWidget::onCheckBoxClicked(int state)
{
// If you wanted to work with the specific checkbox clicked:
// Use QObject::sender() to retrieve a pointer to the QCheckBox,
// and cast it from QObject* to QCheckBox*:
// auto cb = qobject_cast<QCheckBox*>(sender());
// Otherwise, if you don't care which, and want to work with them all:
// Loop over all your checkboxes, doing whatever you want:
for (auto cb : checkBoxes) {
qDebug() << "The checkbox with text" << cb->text() << "has state" << state;
}
}
Добавьте это к слотам в объявлении YourWidget
.