How to hide scrollbar in QScrollArea?
Asked Answered
D

4

13

How can one hide the scrollbars in a QScrollArea? Currently I use the hide() method on the scrollbars returned by QScrollArea::horizontalScrollBar() and QScrollArea::verticalScrollBar() but the space reserved for scrollbars still remains. Obviously this looks very ugly and is not space efficient. If I remove the scrollbars altogether I can no longer easily scroll to a specific point using QScrollBar::setValue().

Decamp answered 1/8, 2010 at 18:44 Comment(0)
M
22

You can hide it using a style sheet. Use height:0px; to hide the horizontal scroll bar and width=0px; to hide the vertical scroll bar. Like that:

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

And voila!.No scroll bars, and you can still manipulate them using setValue().

Mosa answered 5/9, 2013 at 11:9 Comment(0)
G
20

Use this code:

QAbstractScrollArea::setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff )
QAbstractScrollArea::setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ) 
Gotcher answered 2/8, 2010 at 1:42 Comment(3)
If I do it that way I can no longer scroll to a specific point using QScrollBar::setValue() (because the scrollbars do not exist)Decamp
If you need a scroll bar when needed, use the policy: Qt::ScrollBarAsNeeded. If you want to scroll content programmatic, use QAbstractScrollArea::scrollContentsBy ( int dx, int dy )Gotcher
Apparenly you should call scrollbar's setValue() instead of scrollContentsBy().Frore
B
4

This piece of code can do the job:

 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 verticalScrollBar()->hide();
 verticalScrollBar()->resize(0, 0);
Backbreaker answered 30/8, 2010 at 2:37 Comment(0)
L
1

From Qt documents for scrollContentsBy():

Calling this function in order to scroll programmatically is an error, use the scroll bars instead (e.g. by calling QScrollBar::setValue() directly).

Lumbard answered 28/11, 2011 at 19:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.