Re: Как правильно понимать QSizePolicy?
От: romankr  
Дата: 14.12.11 10:33
Оценка:
Здравствуйте, baf, Вы писали:

baf>Не могу понять как сделать потомка QWidget, такого, чтобы вёл себы в QHBoxLayout как кнопка. Т.е. был фиксирован по высоте, не сжимался бы по ширине меньше заданного размера, и растягивался по ширине на всю область.

baf>Переопределил метод sizeHint():

baf>
baf>QSize SOFMWidget::sizeHint()
baf>{
baf>    return QSize(img.width(), img.height());
baf>}
baf>


baf>установил QSizePolicy в конструкторе:

baf>
baf>SOFMWidget::SOFMWidget(QWidget *parent) :
baf>    QWidget(parent), m_sofm(0)
baf>{
baf>    setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
baf>}
baf>


baf>Но не работает. При изменении размеров окна которое содержит мой виджет — мой виджет меняется произвольно. Хотя кнопка ведёт себя как нужно.


baf>Пожалуйста, помогите разобраться. Видимо, я категорически неправильно понимаю QSizePolicy


я думаю, логично было бы внимательно посмотреть SizePolicy у дефолтной кнопки В данном случае вы немного перепутали, надо вот так:
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);

К тому же, есть вот еще один момент.
> Т.е. был фиксирован по высоте, не сжимался бы по ширине меньше заданного размера,
минимальный размер можно выставит руками с помощью функции setMinimumSize().
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.