crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Автоматическое измение размеров виджетов, Необходимо чтобы QGridLayout изменял свой размер.
silver47
  опции профиля:
сообщение 21.1.2011, 7:58
Сообщение #1


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

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

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




Репутация:   6  


Доброго времени суток.

QGridLayout содержит элементы, размер которых может меняться. При увеличении размера элементов, QGridLayout растягивается, при уменьшении - не сжимается до прежнего. Как это реализовать?

Собственно вопрос касается не только QGridLayout но и всего приложения. Как это можно сделать?

Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 21.1.2011, 8:19
Сообщение #2


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Я честно говоря не понял вопроса. Что нужно реализовать?
P.S. всегда прикладывайте код, если это возможно, так проще разбираться
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 21.1.2011, 8:52
Сообщение #3


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

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

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




Репутация:   6  


Цитата(igor_bogomolov @ 21.1.2011, 10:19) *
Я честно говоря не понял вопроса. Что нужно реализовать?
P.S. всегда прикладывайте код, если это возможно, так проще разбираться


QGroupBox *grp = new QGroupBox;
QGridLayout *lay = new QGridLayout;
grp->setLayout(lay);

button1 = new QPushButton("1");
button1->setMaximumWidth(10);
button2->setMaximumWidth(10);
button2 = new QPushButton("2");
lay->addWidget(button1, 0, 0);
lay->addWidget(button2, 0, 0);

После сих действий размер виджета будет приблизительно 30-40 пикселей. Затем выполняем подобную функцию:

button1->setMinimumWidth(200);
button2->setMinimumWidth(200);

а после сих больше 400т.

затем опять
button1->setMaximumWidth(10);
button2->setMaximumWidth(10);


Кнопки уменьшатся, но окно останется большим > 400px. Как вернуть его к прежнему размеру, т.е. как сделать так, чтобы QGridLayout сжался до минимально необходимого размера для вмещения виджетов(он это делает при создании), и само окно вернуть к этому же размеру? QWidget::setMaximumWidtn не предлагать - его тогда растянуть нельзя будет мышкой :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 21.1.2011, 9:03
Сообщение #4


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(silver47 @ 21.1.2011, 8:52) *
как сделать так, чтобы QGridLayout сжался до минимально необходимого размера для вмещения виджетов(он это делает при создании), и само окно вернуть к этому же размеру?
Попробуй для этого окна сделать void QWidget::adjustSize ()

И в место setMinimumWidth/setMaximumWidth для кнопки лучше тогда использовать setFixedSize, а то путаница какая то получается
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 20.12.2024, 15:12