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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: resize  (Прочитано 5123 раз)
kadr
Гость
« : Август 17, 2010, 07:41 »

Привет всем, подскажите, как можно сделать так, что бы при изменении размера окна, все элементы на нем тоже соответсвенно менялись?  Непонимающий
Записан
Nimbus
Гость
« Ответ #1 : Август 17, 2010, 07:54 »

Вроде как, если виджеты расположены на лейауте, то сами ресайзятся при изменения размеров виджета, на котором расположен лейаут.
Можно также посмотреть про QLayout::setResizeMode
Записан
kadr
Гость
« Ответ #2 : Август 17, 2010, 08:19 »

Нет, ничего само не ресайзиться. Мне надо, допустим мышкой растинул форму, и все элементы сразу сами изменились, я просто не знаю какой сигнал использовать!
Расположил все виджеты в лаутах, как теперь сделать что бы они меняли свой размер вместе с основной формой?
« Последнее редактирование: Август 17, 2010, 09:15 от kadr » Записан
crossly
Гость
« Ответ #3 : Август 17, 2010, 10:14 »

подозреваю что забыли назначить лейаут окну...
Записан
Sancho_s_rancho
Гость
« Ответ #4 : Август 17, 2010, 11:42 »

Привет всем, подскажите, как можно сделать так, что бы при изменении размера окна, все элементы на нем тоже соответсвенно менялись?  Непонимающий
В лэйаутах они сами растягиваются.Если не тянутся - значит в коде ошибка (например не указан родитель).
Записан
kadr
Гость
« Ответ #5 : Август 17, 2010, 12:40 »

И как его указать?
ui->gridLayoutWidget->setParent(this);

qDebug() << ui->gridLayoutWidget->parent():
Linux_Comander(0x22fe48, name = "Linux_Comander")
« Последнее редактирование: Август 17, 2010, 12:58 от kadr » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Август 18, 2010, 06:32 »

UI или код выложи.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
kadr
Гость
« Ответ #7 : Август 18, 2010, 07:02 »

А что код, у меня в нем про лауты ничего нет, мне просто скажите как сделать так что бы они вместе с основной формой изменяли размер? Сейчас я делаю так:
Код:
void Linux_Comander::resizeEvent(QResizeEvent *e)
{

    QSize newSize = e->size();
    QSize oldSize = e->oldSize();
    QSize s;

    if(newSize == oldSize)
    {
        return;
    }
    else
    {
        s = oldSize;

       ui->gridLayoutWidget->resize(s.width()-15,s.height()-80);
       ui->horizontalLayoutWidget_5->setGeometry(100,s.height()-60,s.width()-105,20);
       ui->horizontalLayoutWidget_2->setGeometry(10,s.height()-30,s.width()-15,23);
    }
 }
но при таком методе есть проблемы, при запуске программы, форма пустая, пока не начнешь менять размер, тогда появляются все элементы формы, и при разворвчивании формы на весь экран, все элементы на форме остаются неизмененными.
Записан
Sancho_s_rancho
Гость
« Ответ #8 : Август 18, 2010, 08:31 »

Блин, мочи больше нет. Сделай проще, прочти документацию к Qt и посмотри примеры в каталоге examples и demos. Примеров _вагон_
Записан
stump
Гость
« Ответ #9 : Август 18, 2010, 11:42 »

Код:

    QGridLayout *grid = new QGridLayout();
    QTextEdit *text = new QTextEdit();
    QPushButton *button = new QPushButton();

    grid->addWidget(text,0,0,3,2);
    grid->addWidget(button,3,1,1,1);

    this->setLayout(grid);

Записан
Nimbus
Гость
« Ответ #10 : Август 18, 2010, 12:12 »

Код:

    QGridLayout *grid = new QGridLayout();
    QTextEdit *text = new QTextEdit();
    QPushButton *button = new QPushButton();

    grid->addWidget(text,0,0,3,2);
    grid->addWidget(button,3,1,1,1);

    this->setLayout(grid);

Подозреваю, что автор пользовался QtDesigner'ом, а не вручную выделял память виджетам и располагал их в лейауте.
Записан
kadr
Гость
« Ответ #11 : Август 18, 2010, 15:18 »

Все получилось, нодо было просто добавить: ui->centralWidget->setLayout(ui->main_layt);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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