при слишком большом количестве блюд появлялся скрол в групп боксе этой категории блюда
QGridLayout *layoutMain = new QGridLayout(ui->scrollArea); // в нем будут создаваться QSrcrollArea
if(query->isValid())// если есть записи
{
int butRow=0; // для расположения элементов в 2 колонки в основном скроле
bool alter = true; // переменная чтобы знать что нужно переключиться на след строку в сроле
int size = query->size();
for (int row = 0; row < size; row++) // проход по всем записям
{
QString id_typeOfFood = query->value(0).toString(); // получаем айди категории
QString typeOfFood = query->value(1).toString(); // получаем название категории
QGroupBox *configGroup = new QGroupBox(this); // в Лайоте гроуп бокс
connect(configGroup,SIGNAL(clicked()),SLOT(on_configGroup_clicked()));
QGridLayout *gridLayoutUp = new QGridLayout(configGroup); // в груп боксе лайот в котором будут кнопки
configGroup->setLayout(gridLayoutUp);
configGroup->setTitle(typeOfFood);
QScrollArea* scrollArea = new QScrollArea;
QGridLayout *gridLayout = new QGridLayout(scrollArea);// а для этого сперва нужно создать Лайот
scrollArea->setLayout(gridLayout);
// получение блюд по категориям из склада по текущей точке
salesModel = dal_sales->getFoodFromStock(id_typeOfFood);
int count = salesModel->rowCount();
int butRowDown=0;
bool alterDown = true;
for (int var = 0; var < count; var++)
{
// создание экземпляра кнопки и назначение свойств
cashButton *foodButton = new cashButton;//(scrollArea);
// присваивание текста
foodButton->setText(salesModel->record(var).field(2).value().toString() +" " +// имя блюда
salesModel->record(var).field(3).value().toString()); // + порция
foodButton->setObjectName("btn_" + salesModel->record(var).field(7).value().toString());
foodButton->setDescription(salesModel->record(var).field(4).value().toString()+" сом Кол-во: " + QString::number(quantityStock.value(salesModel->record(var).field(7).value().toInt())));
foodButton->food_id = salesModel->record(var).field(7).value().toInt();
foodButton->food_name = salesModel->record(var).field(2).value().toInt();
foodButton->typeofportion_id = salesModel->record(var).field(6).value().toInt();
foodButton->typeofportion = salesModel->record(var).field(3).value().toString();
foodButton->price = salesModel->record(var).field(4).value().toDouble();
foodButton->value = salesModel->record(var).field(8).value().toDouble();
foodButton->setMaximumHeight(60);
foodButton->setMinimumHeight(0);
foodButton->setStyleSheet(css->cashierBtnsStyle);
connect(foodButton,SIGNAL(clicked()),SLOT(on_food_clicked())); // привязка к слоту при нажатии на какое либо блюдо
if(alterDown) // вывод по колонкам
gridLayout->addWidget(foodButton,butRowDown,0);
else
{
gridLayout->addWidget(foodButton,butRowDown,1);
butRowDown++;
}
alterDown = !alterDown;
}
gridLayoutUp->addWidget(scrollArea);// грид с кнопками и скролом добавить
// scrollArea->setWidgetResizable(true);
scrollArea->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn );
// scrollArea->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
scrollArea->setStyleSheet("background-color: rgb(200, 200, 200); border: none;");
configGroup->setStyleSheet("background-color: rgb(200, 200, 200); border:2px dotted white; font-size:20px;color: green;font-style:bold; border-radius:15px;");
QGraphicsDropShadowEffect * ef = new QGraphicsDropShadowEffect;
ef->setBlurRadius(20);
configGroup->setGraphicsEffect(ef);
if(alter)
layoutMain->addWidget(configGroup, butRow,0);
else
{
layoutMain->addWidget(configGroup, butRow,1);
butRow++;
}
alter = !alter;
scrollArea->setWidgetResizable(true);
gridLayoutUp->setContentsMargins(5,20,5,5);// отступы
gridLayout->setContentsMargins(2,3,2,2);
query->next(); // переход к следующей записи
}
}