最近公司项目要用到滚动条,而且要性能非常好,因为图像可能非常大,widget的面积可能几万像素,看了QScrollArea、QAbstractScrollArea设计,太过复杂,
而QListView QTableView QTableWidget等直接或间接继承QAbstractScrollArea,其他很多控件类也直接或间接继承QAbstractScrollArea,
为了摆脱QScrollArea的viewport和其分离的设计,以使用Windows下GDI开发,我决定自己写一个继承自qwidget的子类带QScrollBar,在代码里面控制其位置和显示隐藏特性
自己的widget重载了resizeEvent函数,添加scrollbar的信号槽,上代码:
//CWidget.h
#include <QtWidgets/QMainWindow>
#include <QScrollBar>
#include <QAbstractSlider>
#include <QResizeEvent>
class CWidget : public QWidget
{
Q_OBJECT
public:
CWidget(QWidget* parent = 0);
~CWidget();
private:
QScrollBar* vscrollbar;
QScrollBar* hscrollbar;
private slots:
void valueChangedScrollBar(int value);
protected:
void resizeEvent(QResizeEv