Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QComboBox, предоставление возможности пользователю изменять размер выпадающего списка
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
SABROG
Многие пользователи IE замечали, что у выпадающего списка combobox'a (option) можно менять размеры, однако у стандартных элементов Windows (API) такого уголка нет. Он также не используется в стандартном QComboBox'e. Вот способ, как его добавить:

    QSizeGrip *szg = new QSizeGrip(ui.comboBox);
    ui.comboBox->view()->setCornerWidget(szg);





Несмотря на то, что решение кажется простым и легким, чтобы его найти я сегодня потратил целый день. Скажу лишь, что есть второй способ это сделать без setCornerWidget, но он полон подводных камней, типа расположения уголка в левой верхней части вместо нижней правой, это решается через layout()->addWidget() с нужными параметрами выравнивания, однако возникает другой косяк с тем, что QBoxLayout (используемый по умолчанию в QListView) делит видимую область выпадающего списка на две равные половины, а это мне победить не удалось ни установкой максимальных размеров ни приминением sizePolicy.

Статья в вики
Litkevich Yuriy
SABROG, ты не мог бы добавить это в нашу Вики, точнее в ЧаВо
SABROG
Цитата(Litkevich Yuriy @ 10.12.2008, 18:21) *
SABROG, ты не мог бы добавить это в нашу Вики, точнее в ЧаВо


Добавил. Правда как картинку впихнуть так и не понял, внешние ссылки не работают видимо (html тэги не пробывал).
Litkevich Yuriy
Цитата(SABROG @ 10.12.2008, 21:54) *
как картинку впихнуть так и не понял
картинку надо сначала загрузить (ссылка "Загрузить файл" в боковом меню), а после загрузки сослаться на него.

---
добавил картинку
Tonal
Про растягивание: если ни один из скроллеров не виден, то и уголок не появится.
Чтобы он гарантированно появлялся, нужно сделать один из скроллеров всегда видимым, например вертикальный:
ui.comboBox->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
Litkevich Yuriy
а тут пожалуй и нормально, если содержимое не умещается, то линейка прокрутки появляется автоматом, тогда и уголок будет.
Tonal
Вертикальная - да, а горизонтальная там всегда задизаблина.
Так что есть есть длинная строка то уголок не помешает. :)
SABROG
Цитата(Tonal @ 16.12.2008, 13:17) *
Вертикальная - да, а горизонтальная там всегда задизаблина.
Так что есть есть длинная строка то уголок не помешает. :)

Добавил в вики. Кстати вот как у Microsoft SQL Server Management Studio уголок реализован в property view. Тут уже setCorner'ом не обойдешься :)

Litkevich Yuriy
Цитата(SABROG @ 16.12.2008, 16:40) *
вот как у Microsoft SQL Server Management Studio уголок реализован
как-то неудачно, не с той стороны для правши.
Litkevich Yuriy
Один из читателей вики утверждает, что этот приём не работает в Линуксе, может кто-нибудь проверить?
void*
проверю когда буду свободен
rich
вот что в убунте получилось

зы : видюшка окошка не прикрепилась :( сори size 209533 байт
Litkevich Yuriy
Положи куда-нибудь, например на narod.ru, а сюда ссылку
rich
Цитата(Litkevich Yuriy @ 3.2.2009, 22:23) *
Положи куда-нибудь, например на narod.ru, а сюда ссылку

вот
Litkevich Yuriy
да уж, точно ерунда какая-то.
SABROG
У меня такой эффект был при ручном добавлении QSizeGrip в layout QComboBox'a. Победить не удалось, поэтому появился вариант setCornerWidget. Кстати еще наблюдал глюк в дизайнере, когда sizegrip у statusbar'a был вверх-ногами. Походу глючный он.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2022 IPS, Inc.