Проблемы с размерами скрытых виджетов |
Здравствуйте, гость ( Вход | Регистрация )
Проблемы с размерами скрытых виджетов |
RDron |
15.6.2008, 20:10
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 15.6.2008 Пользователь №: 202 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте.
Проблема вот в чём: есть программа с табами, в конструкторе главного окна в одном табе часть виджетов скрывается (они показываеютя только группами), но пока не перейдешь на этот таб изменить размер окна (уменьшить его) не получается. В этом табе размер выставлен для отображения всех виджетов, а не только тех, что отображаются. Даже если вызывать repaint и после этого resize( minimumSizeHint() ) размер не изменится (пока не перейдёшь на тот таб). Я так понял, что пока виджет не виден Qt не производит с ним действий по вычислению его размеров перерисовке. Единственный выход который я нашел это при старте быстро перейти на нужный таб изменить размер окна и перейти обратно на первый таб, но это вызывает "мигание"... Как сделать перерисовку под нужные размеры не показывая виджет, который нужно перерисовать? |
|
|
void* |
15.6.2008, 21:49
Сообщение
#2
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
переопредели функцию virtual QSize sizeHint();
example:
также возможно тебе понадобится функция setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical) Сообщение отредактировал void* - 15.6.2008, 21:50 |
|
|
RDron |
16.6.2008, 9:13
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 15.6.2008 Пользователь №: 202 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо void*, помогло!
В моём случае можно доже не переопределять sizeHint(), просто вызвав setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Ignored ) получится добиться нужного эффекта. У меня главное окно гораздо больших размеров чем виджеты отображаемые в этом табе (когда они не все вместе отображаются), поэтому можно даже не вычислять sizeHint(). |
|
|
void* |
16.6.2008, 9:48
Сообщение
#4
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
не знаю, что тебе именно нужно, но учти что при QSizePolicy::Ignored предоставляет виджету как можно больше места, и могут быть неожиданные результаты
вот, если хочешь еще почитай про перечисление QSizePolicy::SizeType(из книги): |
|
|
Текстовая версия | Сейчас: 30.11.2024, 9:53 |