Название: Задание размера виджета в статус баре. Отправлено: alexman от Июль 13, 2009, 17:16 Делаю следующее: добавляю в статус бар виджет (QWidget* w), делаю ему resize(a,b), update (рисую в него pixmap). Функция w->width() возвращает a. Но реально на экране виджет не визуализируется.
В чем проблема? Заранее благодарю за подсказки! P.S. если установить w->setMinimumSize( a, b ), то это работает, но затем нельзя изменить размеры окна меньше (a,b), что не нужно. Название: Re: Задание размера виджета в статус баре. Отправлено: BRE от Июль 13, 2009, 17:27 Делаю следующее: добавляю в статус бар виджет (QWidget* w), делаю ему resize(a,b), update (рисую в него pixmap). Функция w->width() возвращает a. Но реально на экране виджет не визуализируется. А show ему делал?В чем проблема? Заранее благодарю за подсказки! P.S. не нужно советовать установить w->setMinimumSize( a, b ). Название: Re: Задание размера виджета в статус баре. Отправлено: f-r-o-s-t от Июль 13, 2009, 17:28 Код можно =)
Название: Re: Задание размера виджета в статус баре. Отправлено: alexman от Июль 13, 2009, 17:30 show() не помогает!
Название: Re: Задание размера виджета в статус баре. Отправлено: alexman от Июль 14, 2009, 08:06 Код можно =) Вот код! Только я здесь не pixmap рисую, а текст. Но проблема остается! Код: #include <QMainWindow> Название: Re: Задание размера виджета в статус баре. Отправлено: spectre71 от Июль 14, 2009, 09:58 Зачем ты создаешь новый QStatusBar? Не проще использовать уже существующий statusBar()!
w->resize( 300, w->minimumHeight() );//Так даже ничего не рисуется! И не будет - minimumHeight у тебя == 0; Не понятно чего ты хочешь вообще добиться выставлением размеров, опиши задачу! Может тебе это нужно? w->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); Название: Re: Задание размера виджета в статус баре. Отправлено: alexman от Июль 14, 2009, 10:41 Зачем ты создаешь новый QStatusBar? Не проще использовать уже существующий statusBar()! w->resize( 300, w->minimumHeight() );//Так даже ничего не рисуется! И не будет - minimumHeight у тебя == 0; Не понятно чего ты хочешь вообще добиться выставлением размеров, опиши задачу! Может тебе это нужно? w->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); Проблема решена: я использовал addWidget с пораметром stretch == 0, а stretch есть доля занимаемого места по ширине на статус баре. То есть если установить stretch > 0, то status bar сам будет растягивать виджет, исходя из stretch. Название: Re: Задание размера виджета в статус баре. Отправлено: alexman от Июль 14, 2009, 10:45 Кстати w->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)) тоже пойдет. Но если хотим чтобы виджет не растягивался больше определенного значения (так часто требуется), то нужно в ручную определять setMaxumumSize для виджета. Лучше использовать параметр stretch :)
Название: Re: Задание размера виджета в статус баре. Отправлено: spectre71 от Июль 14, 2009, 10:54 Кстати w->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)) тоже пойдет. Но если хотим чтобы виджет не растягивался больше определенного значения (так часто требуется), то нужно в ручную определять setMaxumumSize для виджета. Лучше использовать параметр stretch :) w->setMaximumWidth ( int maxw )stretch - если необходимо поддерживать определенные пропорции нескольких виджетов на уровне Layout. |