Skip to content

Fix large integer ranges on QRangeSlider / QLabeledRangeSlider - #351

Open
Phoenix0531-sudo wants to merge 3 commits into
pyapp-kit:mainfrom
Phoenix0531-sudo:fix/labeled-range-slider-large-range
Open

Fix large integer ranges on QRangeSlider / QLabeledRangeSlider#351
Phoenix0531-sudo wants to merge 3 commits into
pyapp-kit:mainfrom
Phoenix0531-sudo:fix/labeled-range-slider-large-range

Conversation

@Phoenix0531-sudo

Copy link
Copy Markdown

Summary

examples/labeled_sliders.py crashes on Windows with PyQt6 when it calls QLabeledRangeSlider.setRange(0, 10**11). The traceback is a TypeError from rangeChanged(...).emit(): the integer range slider still used Qt's native rangeChanged(int, int), which cannot carry values outside the signed 32-bit range. The double variants already rebind rangeChanged to frangeChanged (Signal(float, float)); this PR applies the same pattern to QRangeSlider and QLabeledRangeSlider.

This stays a small signal rebind, not the broader slider inheritance refactor discussed in #249 / #283.

Testing

  • Added regression tests for QRangeSlider / QLabeledRangeSlider with 10**11 ranges
  • Reproduced the TypeError on Windows (PyQt6 6.11) before the fix; example path and new tests pass after
  • pytest tests/zz_test_sliders: 283 passed, 50 skipped, 1 xfailed
  • Existing full suite has unrelated eliding-label failures on this Windows offscreen setup (font metrics); unrelated to this change

Related

Fixes #308

QRangeSlider left rangeChanged bound to QSlider's native Signal(int, int),
so setRange(0, 10**11) failed on PyQt6 when emitting rangeChanged. The
double variants already rebind rangeChanged to frangeChanged; do the same
for the integer range slider and labeled wrapper so examples/labeled_sliders.py
works on Windows.

Fixes pyapp-kit#308
After rebinding rangeChanged to frangeChanged, older PySide6 builds on
Windows still raise OverflowError when the payload is a Python int larger
than C long. Emit float(min)/float(max) so large ranges such as 10**11
work with both PyQt6 and PySide6.

Refs pyapp-kit#308
QLabeledSlider still uses QAbstractSlider's native rangeChanged(int, int).
Only _GenericSlider.setRange needs float() for frangeChanged / pyapp-kit#308.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

examples/labeled_sliders.py broken

1 participant