[Bug]: Checkboxes are not displaying checkmarks #24

Closed
opened 2026-06-09 02:59:19 +00:00 by ValleyGeek · 3 comments
Owner

App version

0.1.1

Platform

Both

Steps to reproduce

  1. Open application
  2. open image viewer, tag menu, settings menu
  3. Toggle any checkbox

Expected behavior

Checkmark to appear and disappear when option is enabled or disabled

Actual behavior

option toggles but no checkbox appears. Options that are true on load still have no graphical indicator in the box

Additional context

No response

### App version 0.1.1 ### Platform Both ### Steps to reproduce 1. Open application 2. open image viewer, tag menu, settings menu 3. Toggle any checkbox ### Expected behavior Checkmark to appear and disappear when option is enabled or disabled ### Actual behavior option toggles but no checkbox appears. Options that are true on load still have no graphical indicator in the box ### Additional context _No response_
Member

Triage

Confirmed bug (Reviewed/Confirmed). Checkboxes toggle state correctly but the checked indicator is invisible on standard and high-DPI displays.

Root cause: Checkbox checkmarks were painted via QCheckBox::indicator:checked { image: url(...) } in the application stylesheet (PNG generated at a fixed 15×15 size). Qt does not reliably load/scale those indicator images—especially at device pixel ratios > 1—so the box renders without a checkmark even when isChecked() is true.

Fix (branch 0.1.1/issue-24-checkbox-checkmarks)

  • Replaced QSS indicator images with ThemedProxyStyle, which paints checkbox indicators via QPainter (vector strokes) using theme colors.
  • Install the proxy before QApplication.setStyleSheet() so Qt keeps checkbox painting on the proxy while panel/splitter rules remain in QSS.
  • Added regression test that samples indicator pixels to verify the checkmark color is present.

Version: 0.1.2

Please verify on your displays (especially 125%/150% Windows scaling or fractional Linux scaling) and let me know if this can be closed.

## Triage **Confirmed bug** (`Reviewed/Confirmed`). Checkboxes toggle state correctly but the checked indicator is invisible on standard and high-DPI displays. **Root cause:** Checkbox checkmarks were painted via `QCheckBox::indicator:checked { image: url(...) }` in the application stylesheet (PNG generated at a fixed 15×15 size). Qt does not reliably load/scale those indicator images—especially at device pixel ratios > 1—so the box renders without a checkmark even when `isChecked()` is true. ## Fix (branch `0.1.1/issue-24-checkbox-checkmarks`) - Replaced QSS indicator images with `ThemedProxyStyle`, which paints checkbox indicators via `QPainter` (vector strokes) using theme colors. - Install the proxy **before** `QApplication.setStyleSheet()` so Qt keeps checkbox painting on the proxy while panel/splitter rules remain in QSS. - Added regression test that samples indicator pixels to verify the checkmark color is present. **Version:** 0.1.2 Please verify on your displays (especially 125%/150% Windows scaling or fractional Linux scaling) and let me know if this can be closed.
Author
Owner

Confirmed corrected on both OSs

Confirmed corrected on both OSs
Member

Fix confirmed by reporter. Closing as resolved.

Delivered in PR #30 (0.1.1/issue-24-checkbox-checkmarksmain, version 0.1.2). Checkbox indicators now paint checkmarks via ThemedProxyStyle instead of QSS indicator images, which restores visible checked state on high-DPI displays.

Fix confirmed by reporter. Closing as resolved. Delivered in PR #30 (`0.1.1/issue-24-checkbox-checkmarks` → `main`, version 0.1.2). Checkbox indicators now paint checkmarks via `ThemedProxyStyle` instead of QSS indicator images, which restores visible checked state on high-DPI displays.
Grok closed this issue 2026-06-09 05:45:40 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ai-collab/bulk-image-organizer#24
No description provided.