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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать, что бы widget растягивался на 100% по высоте и ширине?  (Прочитано 6049 раз)
kilanoff
Гость
« : Февраль 12, 2011, 22:01 »

есть в общем окно, в нем есть тулбар и остальное пустое место должно быть замощено ScrollArea

например в той же Delphi можно установить свойство Align:=alClient; и тогда объект заполнит свободное пространство

как в Qt UI Сделать также?
Записан
Fat-Zer
Гость
« Ответ #1 : Февраль 12, 2011, 22:11 »

читайте про лейауты
Записан
kdm
Гость
« Ответ #2 : Февраль 12, 2011, 22:17 »

Пока набирал ответ уже появился. Но все же...

Использовать менеджеры размещения: QHBoxLayout, QVBoxLayout, QGridLayout, они могут управлять автоматически размерами виджетов, основываясь на политике размера (size policy) виджета.

Ну или для такого примера можно создать QMainWindow (там и место под тулбар и под статусбар уже заделано) и установть mainwindow.setMainWidget(scrollarea).

Но всеравно автоматическим изменением размеров виджетов занимаются потомки QLayout. В асситанте набери Layout Classes, там все должно быть расписано.
Записан
santaclaus
Гость
« Ответ #3 : Февраль 12, 2011, 22:23 »

как в Qt UI Сделать также?

если делаешь через QtCreator форму, тогда выдели главное окошко куда сложенны компоненты и далее на панели инструментов "Скомпоновать по сетке" Ctl+G.

Если взял QWidget и сам внутри все прописываешь, то читай как указали выше про QLayout.

Вот пример как внутри работать с выравниванием:

Код:
//пишем в нашем окошке где хотим сделать выравнивание
QGridLayout* pgLayout = new QGridLayout; //создание элемента выравнивания для формы
pgLayout->addWidget(groupBoxButton, 0, 0);// добавляем группу кнопок
pgLayout->addWidget(exitButton, 1, 0); //добавляем ниже кнопку выхода
    
setLayout(pgLayout); //говорим нашей форме что бы использовала созданное выравнивание
Записан
kilanoff
Гость
« Ответ #4 : Февраль 13, 2011, 14:33 »

реализовал в resizeEvent у окна
там и задаю размеры виджета, который должен быть растянут на 100% 100%
Код:
void MainWindow::resizeEvent(QResizeEvent *event)
{
    int w = width();
    int h = height();
    int ht = ui->toolBar->height();

    ui->scrollArea->setGeometry(0,0,w,h-ht);
}
Записан
Fat-Zer
Гость
« Ответ #5 : Февраль 13, 2011, 14:39 »

реализовал в resizeEvent у окна
там и задаю размеры виджета, который должен быть растянут на 100% 100%
Код:
void MainWindow::resizeEvent(QResizeEvent *event)
{
    int w = width();
    int h = height();
    int ht = ui->toolBar->height();

    ui->scrollArea->setGeometry(0,0,w,h-ht);
}

и как обычно желание сделать всё через жопу перевешивает желание учиться...
Записан
kilanoff
Гость
« Ответ #6 : Февраль 13, 2011, 16:13 »

реализовал в resizeEvent у окна
там и задаю размеры виджета, который должен быть растянут на 100% 100%
Код:
void MainWindow::resizeEvent(QResizeEvent *event)
{
    int w = width();
    int h = height();
    int ht = ui->toolBar->height();

    ui->scrollArea->setGeometry(0,0,w,h-ht);
}

и как обычно желание сделать всё через жопу перевешивает желание учиться...

уж извините
Записан
kilanoff
Гость
« Ответ #7 : Февраль 13, 2011, 16:20 »

сделал на лайауте, норм) всем спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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