LINUX.ORG.RU

QScrollArea обрезает надписи

 


0

1

Здравствуй, лор. Помоги побороть QScrollArea. Выглядит сей ужас как-то так: http://storage9.static.itmages.ru/i/14/1221/h_1419206232_7463140_047159d91e.png Т.е. надписи, находящиеся в QScrollArea обрезаются по горизонтали. Надо, чтобы все элементы показывались полностью, при этом, при изменении размеров окна эта область не увеличивалась в размерах, а оставалась постоянной.

★★★★★

QWidget::setFixedWidth тебе в помощь.

Требуемую ширину QScrollArea рассчитай при создании графика. Определи ширину самой длинной надписи, добавь всякие поля слева и справа и передай в setFixedWidth.

archie
()

ЗЫ. Зачем там QScrollArea? Чем обычный QListWidget не устроил?

archie
()
Ответ на: комментарий от archie

Это решение мне приходило в голову, просто как-то странно, что только в рантайме можно сделать. Форма делается в дизайнере, его средствами никак не запилить? А то в дизайнере одно будет видно, а при запуске другое, неудобно.

P.S. ТекстЛейблы там для примера, на самом деле там будет куча всяких контролов, выпадающих списков и т.д.

hippi90 ★★★★★
() автор топика
Последнее исправление: hippi90 (всего исправлений: 1)
Ответ на: комментарий от hippi90

А то в дизайнере одно будет видно, а при запуске другое, неудобно.

Так и должно быть. Пользователь может выставить любой размер шрифта в системе. DPI также может быть разный. Соответственно все текстовые надписи будут иметь другой размер, чем в дизайнере, и все будет выглядеть совсем не так.

ТекстЛейблы там для примера, на самом деле там будет куча всяких контролов, выпадающих списков и т.д.

Ааа, ну сразу бы так и написал. А то на скрине все выглядит так, как будто ты пытаешься сделать самодельный QListWidget. Тогда все это элементарно решается лейаутами.

Заполни QScrollArea элементами. Сделай ему Lay Out Vertically. Он должен ужаться до размеров контента. Установи ему горизонтальный sizePolicy в Minimum. График справа соответственно должен иметь sizePolicy = Expanding. Затем объедини QScrollArea и график в горизонтальный лейаут. Если все сделаешь правильно, то получишь нужный результат.

archie
()
Ответ на: комментарий от hippi90

На первый взгляд все правильно. Далее. У QScrollArea горизонтальный скроллбар отключен что ли? Если да, то включи его и посмотри на результат. QScrollArea не должен ничего обрезать, он должен просто показывать какую-то часть контента вместе с горизонтальной прокруткой.

archie
()
Ответ на: комментарий от archie

Да, горизонтальный скролл отключен. Если включить, то само собой можно прокрутить по горизонтали весь контент. Но выглядеть это будет убого.

hippi90 ★★★★★
() автор топика
Ответ на: комментарий от hippi90

Ок, значит все работает. В дизайнере форм можешь для себя выставить minimumSize у QScrollArea, чтобы все влазило. А в рантайме брать ширину у scrollAreaWidgetContents и делать setFixedWidth, как я описывал в первопосте.

В культях всегда так. В дизайнере форм окошки выглядят так, при запуске - эдак. Приходится после запуска все недоделки руками додрачивать. Знающие люди вообще гуй руками пишут без редакторов форм.

archie
()
Ответ на: комментарий от archie

Хм, что ж, спасибо! Видимо так и сделаю.

hippi90 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.