Название: Как реализовать ? Отправлено: yaDeveloper от Сентябрь 24, 2014, 20:15 Всем доброго времени суток.
Необходимо получить listbox, у которого кнопки прокрутки содержимого расположены по бокам. И соответственно прокрутка содержимого должна осуществляться боковыми кнопками. Но есть проблема, каким образом определить количество элементов, которые находятся в видимой пользователю области ? Допустим, в видимой области может находиться 10 элементов, в списке 8 элементов и как результат кнопки реализующие прокрутку не доступны. А вот когда элементов становится больше 10, то правая кнопка становится доступной со всеми вытекающими (прокрутка списка вперед). После того, как пользователь перейдет на 11, то становится доступной и левая кнопка (прокручивающая список назад). (http://s009.radikal.ru/i307/1409/9a/5dcb4b3e7b51t.jpg) (http://radikal.ru/fp/bf8415f0e1734da2875f8a72baaa542a) Название: Re: Как реализовать ? Отправлено: vizir.vs от Сентябрь 25, 2014, 09:52 хм... А что если считать число символов, взять размер шрифта из qFont и сопоставить с размером виджета.
Название: Re: Как реализовать ? Отправлено: GreatSnake от Сентябрь 25, 2014, 10:30 Пляши от horizontalScrollBar()->value()/maximum().
Если, конечно, listbox производный от QListView. Название: Re: Как реализовать ? Отправлено: OKTA от Сентябрь 25, 2014, 11:10 А взять QListWidget горизонтальный и проверять его элементы на isVisible совсем не кашерно?
Название: Re: Как реализовать ? Отправлено: GreatSnake от Сентябрь 25, 2014, 11:12 А взять QListWidget горизонтальный и проверять его элементы на isVisible совсем не кашерно? Зачем ??? Ведь в скроллбаре и так всё есть.Тут делать-то нечего. Создаёшь QListView/QListWidget c flow LeftToRight. Прячешь скроллбары через set*ScrollBarPolicy( Qt::ScrollBarAlwaysOff ). Коннектишься к горизонтальному к valueChanged(int). И от значений value() и maximum() управляешь кнопками. Название: Re: Как реализовать ? Отправлено: OKTA от Сентябрь 25, 2014, 11:14 ой, действительно, будет проще.
Название: Как реализовать ? Отправлено: yaDeveloper от Сентябрь 25, 2014, 19:14 спс за предложенные варианты решения.
Отдельно хотелось бы узнать у OKTA, как проверить у элементов QListWidget значение свойства isVisible ? Название: Re: Как реализовать ? Отправлено: OKTA от Сентябрь 26, 2014, 09:42 Лучше не надо, это более кривое решение. т.к. проверять видимость виджетов при прокрутке - не особо удобно, крайне затратно, да и глуповато в данном случае ;D
Попробуй сделать, как советует GreatSnake. Но если что, то чтобы проверить isVisible у виджета, просто обращаешься к нему через QWidget * QListWidget::itemWidget ( QListWidgetItem * item ) const и проверяешь. |