QCheckBox not displaying checked state
-
Hi all
I have been developing a GUI, and have run into an issue (or possible bug) with a
QCheckBox
.Problem
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.More Information
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.
Output of
stateChanged(int)
andclicked(bool)
signals: (qDebug()
output)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
-
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.
QPallete::Active, QPalette::base
refers to the active checkbox's background (the white box background)
QPalette::Button
refers to the "actual background" (behind the checkbox and the checkbox text)
Hope this helps!