#pragma once #include #include #include namespace Psc { class Base_Scroll_Bar { public: // 距离控件起点的位置 int start = 0; double get_view_pos() { return this->_view_pos; } void set_view_pos(int view_pos) { this->_view_pos = view_pos; } void resize(int bar_len, int view_len, int owner_len) { this->_bar_len = bar_len; this->view_len = view_len; this->owner_len = owner_len; } bool show = true; QColor background_color = Qt::gray; QColor slider_color = Qt::black; protected: // 主位置情况 double owner_len = 1; double _view_pos = 0; double view_len = 1; // 滚动条位置情况 double _bar_len = 1; // 滚动条长度 public: double rate() { return _bar_len / owner_len; } double bar_len() { return _bar_len; } double pos() { return _view_pos * _bar_len / owner_len; } double view_pos() { return _view_pos; } double slider_len() { return view_len * _bar_len / owner_len; } }; // 向下 class V_Scroll_Bar : public Base_Scroll_Bar { public: double w = 8; void draw(QPainter* painter); QRect get_slider_rect(int ww, int hh); QRect get_bar_rect(int ww, int hh); }; // 向下 class H_Scroll_Bar : public Base_Scroll_Bar { public: double h = 8; void draw(QPainter* painter); QRect get_slider_rect(int ww, int hh); QRect get_bar_rect(int ww, int hh); }; } // namespace Psc