替換QListWidget和QListView的滾動條(QScrollBar)

網上多是用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 <QListWidget>
#include <QScrollBar>
#include <QResizeEvent>

class QHListWidget : public QListWidget
{
    Q_OBJECT

public:
    QHListWidget(QWidget *parent = 0);
    ~QHListWidget();

protected:
    void resizeE
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章