Есть функция, которая с таблицы подгружает данные:
QSqlQuery query;
query.prepare(QString("SELECT * FROM article_article"));
query.exec();
int avaliability;
while(query.next())
{
QHBoxLayout *layout = new QHBoxLayout;
QLabel *label = new QLabel;
label->setText(query.value(2).toString());
layout->addWidget(label);
avaliability = query.value(9).toInt();
if(avaliability == 1)
{
QCheckBox *box = new QCheckBox;
box->setObjectName(query.value(2).toString());
if(query.value(10).toInt() == 0)
box->setChecked(true);
layout->addWidget(box);
}
else
{
QLineEdit *edit = new QLineEdit;
edit->setObjectName(query.value(2).toString());
edit->setText(query.value(10).toString());
layout->addWidget(edit);
}
ui->verticalLayout_2->addLayout(layout);
}
после нужно по кнопочке все это обработать... т.е. считать то что там наделал пользоатель, редактировал ли товар, изменял ли положение чекбоксов и после выгрузить новые данные в базу, обновить...
Ума не приложу как получить доступ из обработчика к виджетам, т.е. узнать какой виджет... QCheckBox или QlineEdit
Пока додумался только взять главный layout пройтись по нему, из него вытащить дочерние layout-ы и после из них вытащить выджеты, но как проверить что за ти виджета ?
for(int i=0;ui->verticalLayout_2->itemAt(i)!=NULL;i++)
{
QHBoxLayout *la = (QHBoxLayout *)ui->verticalLayout_2->itemAt(i)->layout();
for(int j=0;la->itemAt(j)!=NULL;j++)
{
if(la->itemAt(j)->widget() )//тут по хорошему нужно проверить является виджет чек боксом либо лайнэдитом либо вообще лейблом
{
int u;
}
}
}