Russian Qt Forum
Декабрь 10, 2018, 19:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как вставить компоненты в GridLayout сразу с нужным спейсингом по вертикали???  (Прочитано 676 раз)
Fynjisx
Новичок

Offline Offline

Сообщений: 8


Просмотр профиля
« : Декабрь 07, 2017, 16:28 »

Привет Всем!
В Qt Designer размещаю QScrollArea. В него пихаю QGridLayout. В этом QGridLayout размещаю компоненты QLineEdit, по 2 на строку.
Т.е типа нажал кнопку, создались 2 QLineEdit и пихнулись в свободные ячейки строки gridlayout.
Если в grid понапихать скажем 10 строк с QLineEdit, то между ними установится нормальный вертикальный space, который впринципе я задал для grid:
ui->gridLayout->setVerticalSpacing(9);
У меня не получается сохранить этот space, когда я закидываю 2 или 3 строки, этот space всегда больше...компоновщик как то разбрасывает строки равномерно по вертикали, пока ScrollArea не заполнится.
Как сделать чтобы при добавлении второй строки в скроллзону у меня уже был нормальный space???
Да, кстати добавляю виджеты с выравниванием по Top, думал так смогу избавиться, а нет, не получается...

Код:
ui->gridLayout->setVerticalSpacing(/*ui->gridLayoutCommission->verticalSpacing()*/ 9);

ui->scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
for(quint8 iRow = 0; iRow < DeviceList.count()-1; iRow++)
{
QLineEdit* wgt = new QLineEdit();
QLineEdit* wgt2 = new QLineEdit();

//ui->gridLayout->setRowMinimumHeight(iRow, wgt->sizeHint().height() );

ui->gridLayout->addWidget(wgt, iRow, 0, 1, 1, Qt::AlignTop);
ui->gridLayout->addWidget(wgt2, iRow, 1, 1, 1, Qt::AlignTop);

wgt->setMinimumHeight(ui->LineEditOperator->sizeHint().height() ); //аргумент беру с другого компонента на форме
wgt2->setMinimumHeight(ui->LineEditOperator->sizeHint().height() );

wgt->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
wgt2->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Maximum);
wgt2->setMaximumWidth(ui->leDeviceSerialNumber->width() );
Записан
bdv1983
Новичок

Offline Offline

Сообщений: 2


Просмотр профиля
« Ответ #1 : Декабрь 10, 2017, 13:45 »

Можно в Дизайнере добавить Vertical Spacer или в коде с QSpacerItem разобраться.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.114 секунд. Запросов: 22.