Как скрыть полосу прокрутки в QScrollArea?

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

4 ответа

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

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

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

И да, я думал 3 года ответа. Так что я наконец-то могу купить себе закуски.

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

QAbstractScrollArea::setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff )
QAbstractScrollArea::setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ) 

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

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

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

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

Другие вопросы по тегам