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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Как сделать пропорциональное изменение размера QGraphicsWidget в лайауте  (Прочитано 2113 раз)
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« : Май 20, 2013, 11:07 »

Пытаюсь сделать сабж с QGraphicsWidget, добавленный в QGraphicsGridLayout.

Сперва установил виджету heightForWidth = true
Код
C++ (Qt)
MyWidget::MyWidget(QGraphicsItem *parent, Qt::WindowFlags wFlags)
   : QGraphicsWidget(parent, wFlags)
{
   QSizePolicy pol(QSizePolicy::Preferred, QSizePolicy::Preferred);
   pol.setHeightForWidth(true);
   setSizePolicy(pol);
}

Затем переписал метод sizeHint
Код
C++ (Qt)
QSizeF MyWidget::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
{
   if (which == Qt::PreferredSize)
   {
       if (constraint.width() >= 0)
       {
           qDebug() << constraint;
           return QSizeF(constraint.width(), constraint.width());
       }
       return QSizeF(100, 100);
   }
   else
       return QGraphicsWidget::sizeHint(which, constraint);
}

Добавил его в QGraphicsGridLayout и виджет тянется во все стороны без каких либо пропоций. Если делаешь sizeHint = Fixed, тогда вообще не тянется, но квадратный.

Гугление мне пока не помогло. Видел статьи по этому поводу, но не видел историй успеха в конце.

Во вложении - минимальный пример.

Если кто разбирался с этой темой, помогите плиз, очень надо Улыбающийся
« Последнее редактирование: Май 20, 2013, 11:21 от navrocky » Записан

Гугль в помощь
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #1 : Май 20, 2013, 11:21 »

Стоило сюда запостить вопрос, сразу пришло озарение  Веселый

Достаточно указать в sizePolicy по высоте Fixed вместо Preferred:
Код
C++ (Qt)
QSizePolicy pol(QSizePolicy::Preferred, QSizePolicy::Fixed);
Записан

Гугль в помощь
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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