Serg
Гость
|
|
« Ответ #15 : Октябрь 14, 2011, 00:52 » |
|
В общем, из дебага, проведенного над "бутербродом" из доквиджета-табвиджета-стеквиджета-тестпушбуттона я сделал выводы, что во всем виноват табвиджет. Он возвращает неправильный minimumSizeHint().width(), если у него закладки расположены сбоку и неправельный minimumSizeHint().height(), если у него горизонтальное расположение закладок. От того и лейаут плавает.
Я унаследовался от табвиджета и переопределил ему процедуру minimumSizeHint(). Тот код, который содержится в переопределенной процедуре minimumSizeHint() был скопирован (и упрощен) из QTabWidget::minimumSizeHint(). Я удалил (для простоты) с него все части кода, которые не используются в моем табвиджете. Теперь на табвиджете можно размещать элементы, способные фиксировать свои размеры (такие как тестпушбуттон).
Код с переопределенной minimumSizeHint() для доквиджета представлен в спп файле. Работоспособность кода была проверена на стилях "windows", "motif", "cde", "plastique" "cleanlooks" и "windowsxp".
Спасибо за внимание.
|