网上多是用StyleSheet来设置控件默认滚动条的样式,很久之前我也是这么做的。
但是这样做有个小问题,当滚动条显示时,会挤占控件viewport的空间。
一.效果
二.原理
使用自定义的QScrollBar替换控件默认QScrollBar,替换时,要保证自定义的滚动条和默认滚动条能够联动。
默认滚动条会响应鼠标滚轮,联动以后,自定义的滚动条也能响应滚动了,就像效果中展示的一样。
联动关键代码如下:
QScrollBar *m_vScrollBar;
connect(verticalScrollBar(), SIGNAL(valueChanged(int)), m_vScrollBar, SLOT(setValue(int)));
connect(m_vScrollBar, SIGNAL(valueChanged(int)), verticalScrollBar(), SLOT(setValue(int)));
三.代码实践
QHListWidget.h
#ifndef QHLISTWIDGET_H
#define QHLISTWIDGET_H
#include <QList