diff --git a/src/widgets/widgets/qcheckbox.cpp b/src/widgets/widgets/qcheckbox.cpp index 5b44271d48a..98420352d79 100644 --- a/src/widgets/widgets/qcheckbox.cpp +++ b/src/widgets/widgets/qcheckbox.cpp @@ -28,7 +28,7 @@ public: uint tristate : 1; uint noChange : 1; uint hovering : 1; - Qt::CheckState publishedState : 2; + Qt::CheckState publishedState : 3; void init(); }; diff --git a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp index 9055b139019..59d15c4f542 100644 --- a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp +++ b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp @@ -16,6 +16,7 @@ private slots: void initTestCase(); void setChecked(); + void setCheckedSignal(); void setTriState(); void setText_data(); void setText(); @@ -59,6 +60,25 @@ void tst_QCheckBox::setChecked() QVERIFY(!testWidget.isChecked()); } +void tst_QCheckBox::setCheckedSignal() +{ + QCheckBox testWidget; + testWidget.setCheckState(Qt::Unchecked); + QSignalSpy checkStateChangedSpy(&testWidget, &QCheckBox::stateChanged); + testWidget.setCheckState(Qt::Checked); + testWidget.setCheckState(Qt::Checked); + QTRY_COMPARE(checkStateChangedSpy.size(), 1); // get signal only once + QCOMPARE(testWidget.checkState(), Qt::Checked); + testWidget.setCheckState(Qt::Unchecked); + testWidget.setCheckState(Qt::Unchecked); + QTRY_COMPARE(checkStateChangedSpy.size(), 2); // get signal only once + QCOMPARE(testWidget.checkState(), Qt::Unchecked); + testWidget.setCheckState(Qt::PartiallyChecked); + testWidget.setCheckState(Qt::PartiallyChecked); + QTRY_COMPARE(checkStateChangedSpy.size(), 3); // get signal only once + QCOMPARE(testWidget.checkState(), Qt::PartiallyChecked); +} + void tst_QCheckBox::setTriState() { QCheckBox testWidget;