From 7d323240bed00a165d15dc633742954fc7aaa36a Mon Sep 17 00:00:00 2001 From: Talley Lambert Date: Sun, 25 Apr 2021 17:26:19 -0400 Subject: [PATCH] readme --- README.md | 44 ++++++++++++++++++++++++++++++---------- examples/demo_widget.py | 12 +++++++---- images/demo_linux.png | Bin 0 -> 24401 bytes 3 files changed, 41 insertions(+), 15 deletions(-) create mode 100644 images/demo_linux.png diff --git a/README.md b/README.md index a64062a..205d77d 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ range_slider = QRangeSlider() As `QRangeSlider` inherits from `QtWidgets.QSlider`, you can use all of the same methods available in the [QSlider API](https://doc.qt.io/qt-5/qslider.html). The major difference is that `value` and `sliderPosition` are reimplemented as `tuples` of `int` (where the length of the tuple is equal to the number of handles in the slider.) -### value: Tuple[int, ...] +### `value: Tuple[int, ...]` This property holds the current value of all handles in the slider. @@ -80,7 +80,7 @@ range_slider.setValue(val: Sequence[int]) -> None valueChanged(Tuple[int, ...]) ``` -### sliderPosition: Tuple[int, ...] +### `sliderPosition: Tuple[int, ...]` This property holds the current slider positions. It is a `tuple` with length equal to the number of handles. @@ -102,6 +102,15 @@ range_slider.setSliderPosition(val: Sequence[int]) -> None sliderMoved(Tuple[int, ...]) ``` +### Additional properties + +These options are in addition to the Qt QSlider API, and control the behavior of the bar between handles. + +| getter | setter | type | default | description | +| ------------- | ------------- |--------- | -------- | --------- | +| `barIsVisible` | `setBarIsVisible`
`hideBar` / `showBar` | `bool` | `True` | Whether the bar between handles is visible. | +| `barMovesAllHandles` | `setBarMovesAllHandles` | `bool` | `True` | Whether clicking on the bar moves all handles or just the nearest | +| `barIsRigid` | `setBarIsRigid` | `bool` | `True` | Whether bar length is constant or "elastic" when dragging the bar beyond min/max. | ------ ## Example @@ -112,7 +121,9 @@ style of `QSlider` – with or without tick marks. When styles have been applie using [Qt Style Sheets](https://doc.qt.io/qt-5/stylesheet-reference.html), then `QRangeSlider` will inherit any styles applied to `QSlider` (since it inherits from QSlider). If you'd like to style `QRangeSlider` differently than `QSlider`, -then you can also target it directly in your style sheet. +then you can also target it directly in your style sheet. The one "special" +property for QRangeSlider is `qproperty-barColor`, which sets the color of the +bar between the handles. > The code for these example widgets is [here](examples/demo_widget.py) @@ -121,12 +132,19 @@ then you can also target it directly in your style sheet. See style sheet used for this example ```css -/* Because QRangeSlider inherits QSlider, it will also inherit styles */ +/* +Because QRangeSlider inherits from QSlider, it will also inherit styles +*/ +QSlider { + min-height: 20px; +} + QSlider::groove:horizontal { - border: 0px; - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #777, stop:1 #aaa); - height: 20px; - border-radius: 10px; + border: 0px; + background: qlineargradient(x1:0, y1:0, x2:1, y2:1, + stop:0 #777, stop:1 #aaa); + height: 20px; + border-radius: 10px; } QSlider::handle { @@ -137,15 +155,19 @@ QSlider::handle { border-radius: 10px; } -/* "QSlider::sub-page" (which styles the area to the left of the -QSlider handle) is the one exception ... */ +/* +"QSlider::sub-page" is the one exception ... +(it styles the area to the left of the QSlider handle) +*/ QSlider::sub-page:horizontal { background: #447; border-top-left-radius: 10px; border-bottom-left-radius: 10px; } -/* for QRangeSlider, use "qproperty-barColor" */ +/* +for QRangeSlider: use "qproperty-barColor". "sub-page" will not work. +*/ QRangeSlider { qproperty-barColor: #447; } diff --git a/examples/demo_widget.py b/examples/demo_widget.py index 3fd4ab4..b7cb293 100644 --- a/examples/demo_widget.py +++ b/examples/demo_widget.py @@ -3,11 +3,15 @@ from qtrangeslider.qtcompat import QtCore from qtrangeslider.qtcompat import QtWidgets as QtW QSS = """ +QSlider { + min-height: 20px; +} + QSlider::groove:horizontal { - border: 0px; - background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #777, stop:1 #aaa); - height: 20px; - border-radius: 10px; + border: 0px; + background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #777, stop:1 #aaa); + height: 20px; + border-radius: 10px; } QSlider::handle { diff --git a/images/demo_linux.png b/images/demo_linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f33ea1245c68031cdb353be2de08d8b4022bcbde GIT binary patch literal 24401 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