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()
.
How to hide scrollbar in QScrollArea?
Asked Answered
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()
.
Use this code:
QAbstractScrollArea::setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff )
QAbstractScrollArea::setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff )
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 This piece of code can do the job:
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
verticalScrollBar()->hide();
verticalScrollBar()->resize(0, 0);
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).
© 2022 - 2024 — McMap. All rights reserved.