File indexing completed on 2024-05-12 03:48:30
0001 /* 0002 * SPDX-FileCopyrightText: 2006-2011 the LibQxt project <http://libqxt.org, foundation@libqxt.org> 0003 * SPDX-License-Identifier: BSD-3-Clause 0004 */ 0005 0006 #ifndef QXTSPANSLIDER_H 0007 #define QXTSPANSLIDER_H 0008 0009 #include "qxtglobal.h" 0010 #include "qxtnamespace.h" 0011 #include <QSlider> 0012 0013 class QxtSpanSliderPrivate; 0014 class QxtSpanSlider; 0015 class QSpinBox; 0016 0017 /*! 0018 * \brief The SpanSlider class 0019 * Spanslider widget which consists of a spanslider and two spinboxes 0020 * to show minimum and maximum 0021 */ 0022 class SpanSlider : public QWidget { 0023 Q_OBJECT 0024 public: 0025 SpanSlider(Qt::Orientation, QWidget* parent = nullptr); 0026 0027 void setToolTip(const QString&); 0028 void setRange(int, int); 0029 void setSpan(int, int); 0030 0031 private Q_SLOTS: 0032 void sliderSpanChanged(int, int); 0033 void spinBoxMinChanged(int); 0034 void spinBoxMaxChanged(int); 0035 0036 Q_SIGNALS: 0037 void spanChanged(int lower, int upper); 0038 0039 private: 0040 QSpinBox* sbMin{nullptr}; 0041 QSpinBox* sbMax{nullptr}; 0042 QxtSpanSlider* spanslider{nullptr}; 0043 bool m_initializing{false}; 0044 }; 0045 0046 class QxtSpanSlider : public QSlider { 0047 Q_OBJECT 0048 QXT_DECLARE_PRIVATE(QxtSpanSlider) 0049 Q_PROPERTY(int lowerValue READ lowerValue WRITE setLowerValue) 0050 Q_PROPERTY(int upperValue READ upperValue WRITE setUpperValue) 0051 Q_PROPERTY(int lowerPosition READ lowerPosition WRITE setLowerPosition) 0052 Q_PROPERTY(int upperPosition READ upperPosition WRITE setUpperPosition) 0053 Q_PROPERTY(HandleMovementMode handleMovementMode READ handleMovementMode WRITE setHandleMovementMode) 0054 Q_ENUMS(HandleMovementMode) 0055 0056 public: 0057 explicit QxtSpanSlider(QWidget* parent = nullptr); 0058 explicit QxtSpanSlider(Qt::Orientation orientation, QWidget* parent = nullptr); 0059 ~QxtSpanSlider() override; 0060 0061 enum HandleMovementMode { FreeMovement, NoCrossing, NoOverlapping }; 0062 enum SpanHandle { NoHandle, LowerHandle, UpperHandle }; 0063 0064 HandleMovementMode handleMovementMode() const; 0065 void setHandleMovementMode(HandleMovementMode); 0066 0067 int lowerValue() const; 0068 int upperValue() const; 0069 0070 int lowerPosition() const; 0071 int upperPosition() const; 0072 0073 public Q_SLOTS: 0074 void setLowerValue(int lower); 0075 void setUpperValue(int upper); 0076 void setSpan(int lower, int upper); 0077 0078 void setLowerPosition(int lower); 0079 void setUpperPosition(int upper); 0080 0081 Q_SIGNALS: 0082 void spanChanged(int lower, int upper); 0083 void lowerValueChanged(int lower); 0084 void upperValueChanged(int upper); 0085 0086 void lowerPositionChanged(int lower); 0087 void upperPositionChanged(int upper); 0088 0089 void sliderPressed(QxtSpanSlider::SpanHandle); 0090 0091 protected: 0092 void keyPressEvent(QKeyEvent*) override; 0093 void mousePressEvent(QMouseEvent*) override; 0094 void mouseMoveEvent(QMouseEvent*) override; 0095 void mouseReleaseEvent(QMouseEvent*) override; 0096 void paintEvent(QPaintEvent*) override; 0097 }; 0098 0099 #endif // QXTSPANSLIDER_H