crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как вставить компоненты в GridLayout сразу с нужным спейсингом по вертикали?
Fynjy
  опции профиля:
сообщение 8.12.2017, 7:52
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 8.12.2017
Пользователь №: 4685

Спасибо сказали: 0 раз(а)




Репутация:   0  


Привет Всем!
В 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() );
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 9.12.2017, 15:06
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2822
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 191 раз(а)




Репутация:   34  


Fynjy,

Цитата
размещаю QScrollArea. В него пихаю QGridLayout


вот тут уже неправильно: на QScrollArea размещается виджет произвольного размера (QScrollArea::setWidget), а не компоновщик. А вот уже в виджет можно разместить компоновщик

получается, что QScrollArea - это окно для просмотра его подшефного виджета
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Fynjy
  опции профиля:
сообщение 9.12.2017, 16:37
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 8.12.2017
Пользователь №: 4685

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 9.12.2017, 15:06) *
Fynjy,

Цитата
размещаю QScrollArea. В него пихаю QGridLayout


вот тут уже неправильно: на QScrollArea размещается виджет произвольного размера (QScrollArea::setWidget), а не компоновщик. А вот уже в виджет можно разместить компоновщик

получается, что QScrollArea - это окно для просмотра его подшефного виджета

Расскажите как надо. На форме размещен через QtDesigner ScrollArea, в него автоматом добавился какой-то виджет(это видно по дереву в дизайнере), а уже под ним компоновщик, так же закинут.
Остальные виджеты создаю динамически, но компоновщик их раздвигает, если их 2 допустим(один вверху, второй внизу), если три то появляется еще один по центру, ну а когда 6-7, то оставляет нормльный вертикальный space, имеено тот который мне и необходим даже когда я размещаю два три виджета
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 10.12.2017, 10:05
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2822
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 191 раз(а)




Репутация:   34  


Fynjy, пристегни минимальный проект с проблемой, посмотрим
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 18.12.2017, 15:08
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 257
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 25 раз(а)




Репутация:   4  


Я бы в копановщик вставила снизу QVerticalSpacer и другие элементы вставляла бы перед ним.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.4.2018, 0:20