QT通过QStyle自定义滚动条

本文介绍了如何在QT中自定义滚动条样式,首先关闭QScrollArea的默认滚动条显示,然后派生QScrollBar并绑定信号。接着,通过自定义QStyle,仅保留滚动条的灰色滚动区域和滑块。最后,在滚动条的paintevent中绘制定制的控件。
摘要由CSDN通过智能技术生成

在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 = nullptr;
};

我们自定义的QScrollBar需要绑定原有的滚动条信号,这里我们只处理垂直滚动条:

void MyScrollBar::setArea(QAbstractScrollArea * area)
{
	area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
	area-
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值