|
|
|
Qt4.2.2 - запретить виджету/окну растягиваться.
|
|||
|---|---|---|---|
|
#18+
Такой вопрос. В справке к Qt-4.2.2 сказано, что виджету можно запретить, например, менять размер по горизонтали, выставив SizePolicy. Однако на практике это почему-то "не работает" (либо я чего-то недопонимаю). Система Slackware 11 Linux/KDE 3.5.4. Вот пример простого тестового кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. по горизонтали. Хотя кнопки свой вертикальный размер не меняют. Что я упустил? ЗЫ. Как я понимаю, SetGeometry и SetMaximumSize лучше не трогать, так как Виджет (как я понимаю) перестанет себя адаптировать к изменениям размеров шрифтов и т.д, а sizeHint (вроде бы) должен определяться Layout'ом автоматически... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2007, 17:01 |
|
||
|
Qt4.2.2 - запретить виджету/окну растягиваться.
|
|||
|---|---|---|---|
|
#18+
ErVТакой вопрос. В справке к Qt-4.2.2 сказано, что виджету можно запретить, например, менять размер по горизонтали, выставив SizePolicy.Неправильно читаешь. Оно не запрещает менять размер. Оно определяет как виджет будет реагировать на "запрос желаемого размера" полученого от внешнего QLayout. В своем примере, определи SizePolicy не для главного виджета, а для кнопок и сразу увидишь эффект. ErVКак я понимаю, SetGeometry и SetMaximumSize лучше не трогать, так как Виджет (как я понимаю) перестанет себя адаптировать к изменениям размеров шрифтов и т.д, а sizeHint (вроде бы) должен определяться Layout'ом автоматически...Наоборот. Как раз SetMaximumSize и надо трогать если хочешь ограничить виджет в размерах. Естественно он уже не будет расти выше заданого, даже если ты поставишь внутри гигантский шрифт, но ведь ты сам хочешь ограничить максимальный размер, не так ли? А SetGeometry всего-лишь изменит местонахождение и размер виджета "здесь и сейчас". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2007, 17:45 |
|
||
|
Qt4.2.2 - запретить виджету/окну растягиваться.
|
|||
|---|---|---|---|
|
#18+
manIf there is a QLayout that manages this widget's children, the size policy specified by that layout is used.оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2007, 17:45 |
|
||
|
Qt4.2.2 - запретить виджету/окну растягиваться.
|
|||
|---|---|---|---|
|
#18+
White Owl В своем примере, определи SizePolicy не для главного виджета, а для кнопок и сразу увидишь эффект. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Кстати, в оригинальном примере перепутал параметры (1й и 2й), но все равно не работает. Мне просто нужно было запретить ресайз по вертикали и разрешить по горизонтали. e White Owl Как раз SetMaximumSize и надо трогать если хочешь ограничить виджет в размерах. [/quote] Я не хочу ограничить его в размерах, но хочу, чтобы он не растягивался по вертикали (не всегда одно и то же). Т.е. если юзер вдруг поставит 40й шрифт, желательно, чтобы виджет к этому адаптировался. Хотя можно взять sizehint и скопировать его в SizeConstraint :-\ - на изменение системных шрифтов в процессе работы приложение, вроде бы, не может отреагировать (по крайней мере, у меня реагирует только на изменение шрифта для заголовка окна, если это не КДЕ-шное приложение)... [quot maXmo] оно? Почти. У QLayout нету sizePolicy, но есть SizeConstraint, который может запретить ресайзить виджет Код: plaintext 1. и вертикальный. В принципе, если других вариантов нету (кроме setSizeConstraint и setMaximumSize), то проблему можно считать решенной.. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2007, 21:45 |
|
||
|
Qt4.2.2 - запретить виджету/окну растягиваться.
|
|||
|---|---|---|---|
|
#18+
ErVМне просто нужно было запретить ресайз по вертикали и разрешить по горизонтали.А ты поставь по горизонтали очень большое число и все. Например 65536 и с точки зрения юзера получится безлимитное по горизонтали, но лимитированое по вертикали окно. Просто и легко :) Ну конечно если юзер сумеет найти ТАКОЙ БОЛЬШОЙ дисплей, то он сумеет найти и ограничение по горизонтали, но я не думаю что это случится очень скоро :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2007, 22:40 |
|
||
|
Qt4.2.2 - запретить виджету/окну растягиваться.
|
|||
|---|---|---|---|
|
#18+
А если сделать вот так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2007, 22:42 |
|
||
|
Qt4.2.2 - запретить виджету/окну растягиваться.
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > А ты поставь по горизонтали очень большое число и все. Например 65536 и с > точки зрения юзера получится безлимитное по горизонтали, но лимитированое > по вертикали окно. Просто и легко :) Ну конечно если юзер сумеет найти > ТАКОЙ БОЛЬШОЙ дисплей, то он сумеет найти и ограничение по горизонтали, но > я не думаю что это случится очень скоро :) > В общем, решил я схитрить и сделать немного по-другому: Код: plaintext 1. 2. 3. 4. 5. после запуска программа их изменения игнорирует), и слишком сильно растягивать окно не получиться. Спасибо за помощь, вопрос закрыт. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2007, 00:11 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34549983&tid=2028805]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 499ms |

| 0 / 0 |
