QCheckBox not displaying checked state
I have been developing a GUI, and have run into an issue (or possible bug) with a
Adding a QCheckBox component to my form, compiling and running it has no issues. However, when clicking on the checkbox, no visible feedback is displayed.
I added a listener for the
clicked(bool)signal It is used in the debug output to display the current state, which does change.
Only 3 settings are changed on the checkbox:
- Component Text
- Component Name
- Component Checkedstate : Checked.
I added another checkbox to the page, recompiled and ran it without changing anything. Again, this new checkbox does not respond to changes.
Furthermore, I created a new project, added only a checkbox, compiled and ran it. Had no issues displaying the state change. Must be an issue with my project.
QCHECKBOX STATE (stateChanged): "2" QCHECKBOX STATE (clicked): "checked" QCHECKBOX STATE (stateChanged): "0" QCHECKBOX STATE (clicked): "unchecked" QCHECKBOX STATE (stateChanged): "2" QCHECKBOX STATE (clicked): "checked" QCHECKBOX STATE (stateChanged): "0" QCHECKBOX STATE (clicked): "unchecked"
If any additional project info is required, feel free to leave a comment
Weird case. Are you using QSS by any chance? Perhaps you ran into https://bugreports.qt.io/browse/QTBUG-48023
@sierdzio you are correct, after much searching, I found out that in the CSS, setting the QCheckBox::indicator color will mess with the checkbox mark.
I will post a solution shortly
Thanks for asking though!
Here is a possible solution for solving this "missing check/mark" issue.
I implemented the CSS "indicator" solution I got from this qt form post which is problematic.
Sources of solution:
QPalette p = ui->checkBox->palette(); p.setColor(QPalette::Active, QPalette::Base, QColor(255, 255, 255)); p.setColor(QPalette::Button, QColor(255, 255, 255)); ui->checkBox->setAutoFillBackground(true); ui->checkBox->setPalette(p);
QColor(255, 255, 255)
refers to your desired background color, possibly the same color as your window background, etc.
refers to the active checkbox's background (the white box background)
refers to the "actual background" (behind the checkbox and the checkbox text)
Hope this helps!