Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: uriel от Март 04, 2009, 08:08



Название: Ручное позиционирование виджетов
Отправлено: uriel от Март 04, 2009, 08:08
Суть проблемы примерно в следующем: есть некий виджет, который уже отображается на экране. Скажем, по нажатию на него, требуется отобразить ещё один (пусть он будет аналогом tooltip'а для простоты). Как я понял, точные размеры виджета определяются только после того, как он станет видимым и управление вернётся в очередь сообщений Qt, чтобы отработать resize, move и так далее.
Грубо говоря, когда виджет только создан и помещён в layout, метод size().width() возвращает 100, sizeHint().width() - 29, а уже после отрисовки размер оказывается равен 49. В итоге, если я хочу отцентировать этот новый виджет относительно первого, то приходится сначала отобразить его, а потом уже выполнить нужные расчёты и перемещения. И всё бы ничего, но появляется эффект "мерцания", когда виджет сначала появляется где-то в левом месте и потом ловко перескакивает в нужное.
Это я себе просто жизнь усложняю или есть какое-то более изящное решение подобной задачи? :)


Название: Re: Ручное позиционирование виджетов
Отправлено: registrationfedser87 от Март 04, 2009, 09:08
Если подойдёт,то можно использовать QDialog, он сам центрируется по родительскому виджету


Название: Re: Ручное позиционирование виджетов
Отправлено: uriel от Март 04, 2009, 13:01
Задача центрирования была приведена просто в качестве примера. На деле там всё немного сложнее. :)


Название: Re: Ручное позиционирование виджетов
Отправлено: registrationfedser87 от Март 04, 2009, 14:08
может быть нужно вызывать метод виджета adjustSize() перед определением размеров?


Название: Re: Ручное позиционирование виджетов
Отправлено: uriel от Март 04, 2009, 17:27
Тьфу ж ты блин. ;)
Премного благодарен.