How to hide scrollbar in QScrollArea?
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()
.
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 )
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).
精彩评论