Как скрыть полосу прокрутки в QScrollArea? - PullRequest
7 голосов
/ 01 августа 2010

Как можно скрыть полосы прокрутки в QScrollArea?В настоящее время я использую метод hide() на полосах прокрутки, возвращаемых QScrollArea::horizontalScrollBar() и QScrollArea::verticalScrollBar(), но пространство, зарезервированное для полос прокрутки, все еще остается.Очевидно, это выглядит очень некрасиво и не экономит место.Если я полностью уберу полосы прокрутки, я больше не смогу легко перейти к определенной точке, используя QScrollBar::setValue().

Ответы [ 4 ]

15 голосов
/ 05 сентября 2013

Вы можете скрыть это, используя таблицу стилей. Используйте height:0px;, чтобы скрыть горизонтальную полосу прокрутки, и width=0px;, чтобы скрыть вертикальную полосу прокрутки. Вот так:

horizontalScrollBar()->setStyleSheet("QScrollBar {height:0px;}");
verticalScrollBar()->setStyleSheet("QScrollBar {width:0px;}");

И вуаля!. Нет полос прокрутки, и вы все равно можете управлять ими, используя setValue().

15 голосов
/ 02 августа 2010

Используйте этот код:

QAbstractScrollArea::setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff )
QAbstractScrollArea::setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ) 
1 голос
/ 28 ноября 2011

Из документов Qt для scrollContentsBy():

Вызов этой функции для программной прокрутки является ошибкой, вместо этого используйте полосы прокрутки (например, напрямую вызывая QScrollBar :: setValue ()).

1 голос
/ 30 августа 2010

Этот кусок кода может сделать работу:

 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 verticalScrollBar()->hide();
 verticalScrollBar()->resize(0, 0);
...