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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ручное позиционирование виджетов  (Прочитано 3604 раз)
uriel
Гость
« : Март 04, 2009, 08:08 »

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

Если подойдёт,то можно использовать QDialog, он сам центрируется по родительскому виджету
Записан
uriel
Гость
« Ответ #2 : Март 04, 2009, 13:01 »

Задача центрирования была приведена просто в качестве примера. На деле там всё немного сложнее. Улыбающийся
Записан
registrationfedser87
Гость
« Ответ #3 : Март 04, 2009, 14:08 »

может быть нужно вызывать метод виджета adjustSize() перед определением размеров?
Записан
uriel
Гость
« Ответ #4 : Март 04, 2009, 17:27 »

Тьфу ж ты блин. Подмигивающий
Премного благодарен.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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