在qt里面有默认的滚动区域可以方便使用,QScrollArea,这个自带了水平和垂直滚动条。
但是这些默认样式一般不是我们想要的,例如很多时候我们只需滚动块,而不需要其他的控件。
例如效果:

现在介绍自定义滚动条。
1.关闭默认滚动条显示
在使用QScrollArea时,垂直和水平滚动条全部不展示:
area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
area->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
2.派生QScrollBar
class MyScrollBar :public QScrollBar
{
Q_OBJECT
public:
MyScrollBar(QWidget* parent = nullptr);
~MyScrollBar();
QSize sizeHint()const override;
void setArea(QAbstractScrollArea * area);
protected:
void paintEvent(QPaintEvent *ev) override;
private slots:
void onSetRange(int min, int max);
private:
QAbstractScrollArea* m_area = nullptr;
MyScrollStyle* m_style =

本文介绍了如何在QT中自定义滚动条样式,首先关闭QScrollArea的默认滚动条显示,然后派生QScrollBar并绑定信号。接着,通过自定义QStyle,仅保留滚动条的灰色滚动区域和滑块。最后,在滚动条的paintevent中绘制定制的控件。
最低0.47元/天 解锁文章
1170

被折叠的 条评论
为什么被折叠?



