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

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

Страниц: 1 ... 4 5 [6]   Вниз
  Печать  
Автор Тема: Получаю не правильный размер widget'a и маленький вопрос о include  (Прочитано 38894 раз)
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #75 : Декабрь 14, 2009, 11:09 »

я думаю, что ещё и стили могут свою лепту вносить в поведение.
Записан

Юра.
SABROG
Гость
« Ответ #76 : Декабрь 14, 2009, 12:43 »

На твоем проекте - нет. Ресайз же заблокирован:
setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint);

Я закомментировал эту строчку. Она мешает пониманию проблемы Улыбающийся

Вместо этого флага можно использовать более переносимое решение
Код
C++ (Qt)
setFixedSize(ui.tableWidget->minimumSizeHint());
 

Однако minimumSizeHint() возвращает размер только текущей вкладки, а не наибольший минимальный размер, как об этом заявлено в Qt Quarterly.

BRE, скачал твои исходники, вообще не понял странного поведения. В дизайнере если в "Preview" форму сжимать по горизонтали, то размеры упираются в минимальный размер. А вот в скомпилированном приложении можно форму уменьшать до такой степени, что виджеты начинают пересекаться. Этого не происходит в исходниках spectre, скорее всего у него где-то стоят дополнительные компановщики. Непонятно почему дизайнер в Preview ведет себя одинаково на обоих вариантах и по разному в компилируемом коде.
« Последнее редактирование: Декабрь 14, 2009, 14:19 от SABROG » Записан
BRE
Гость
« Ответ #77 : Декабрь 14, 2009, 14:28 »

Я уже сам ничего не понимаю.  Улыбающийся
Сегодня проблемы со временем, как появиться буду дальше смотреть.
Нормально QTabWidget::minimumSizeHint считается только после визуализации....
Одни вопросы, нужно разбираться.  Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #78 : Декабрь 14, 2009, 14:43 »

может можно тему к потолку прилепить?
Записан

Юра.
SABROG
Гость
« Ответ #79 : Декабрь 14, 2009, 14:52 »

Насчет пересечения виджетов в исходниках BRE разобрался, тут устанавливаются заведомо неверные минимальные размеры:

Код
C++ (Qt)
ui.tabWidget->setMinimumSize(ui.tabWidget->minimumSizeHint());
 

Которые равны минимальному размеру второй вкладки, а не сумме минимальных размеров всех вкладок. Это при том, что по умолчанию выбрана вкладка с заведомо большим контентом. Т.е. minimumSizeHint() возвращает то, чего от него ожидают увидеть пользователи судя по названию. Т.е. пробегается по всем размерам существующих вкладок и возвращает минимальную из них. Нужен какой-то метод альтернативный типа maximumSizeHint(), но только, чтобы размеры возвращались не бесконечно возможные.

В общем я думаю задача свелась к тому, чтобы узнать размер страницы в скрытом QStackedLayout'e, если она еще не была ни разу показана.
« Последнее редактирование: Декабрь 14, 2009, 18:57 от SABROG » Записан
SABROG
Гость
« Ответ #80 : Декабрь 15, 2009, 21:10 »

Отдельно создал проект с использование QStackedLayout+QComboBox (для переключения страниц) вместо QTableWidget. Проверил - размер основного окна выставляется по максимальным размерам других страниц, не смотря на то, что в окне всего один QPushButton. Подумал, что проблема кроется все-таки в QTabWidget. Поместил его вместо QStackedLayout - поведение точно такое же: размер окна принял размер максимального размера скрытых вкладок. Т.е. то самое поведение, которого хочет spectre. Может я чего забыл или упустил, проект приаттачил.

P.S.: вызов adjustSize() не делал, т.к. это приводит к тому, что окно становится еще больше, вместо того, чтобы стать меньше.
« Последнее редактирование: Декабрь 15, 2009, 21:14 от SABROG » Записан
Страниц: 1 ... 4 5 [6]   Вверх
  Печать  
 
Перейти в:  


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