diff options
-rw-r--r-- | src/widgets/itemviews/qtreewidget.cpp | 2 | ||||
-rw-r--r-- | tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp index 704f8975b9..007760ef16 100644 --- a/src/widgets/itemviews/qtreewidget.cpp +++ b/src/widgets/itemviews/qtreewidget.cpp @@ -1720,7 +1720,7 @@ void QTreeWidgetItem::setData(int column, int role, const QVariant &value) } } break; case Qt::CheckStateRole: - if (itemFlags & Qt::ItemIsTristate) { + if ((itemFlags & Qt::ItemIsTristate) && value != Qt::PartiallyChecked) { for (int i = 0; i < children.count(); ++i) { QTreeWidgetItem *child = children.at(i); if (child->data(column, role).isValid()) {// has a CheckState diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp index 23b6c3e369..8bcd03c760 100644 --- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp +++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp @@ -1048,6 +1048,12 @@ void tst_QTreeWidget::checkState() QCOMPARE(item->checkState(0), Qt::Unchecked); QCOMPARE(firstChild->checkState(0), Qt::Unchecked); QCOMPARE(seccondChild->checkState(0), Qt::Unchecked); + + // Can't force the state to PartiallyChecked; state comes from children + item->setCheckState(0, Qt::PartiallyChecked); + QCOMPARE(item->checkState(0), Qt::Unchecked); + QCOMPARE(firstChild->checkState(0), Qt::Unchecked); + QCOMPARE(seccondChild->checkState(0), Qt::Unchecked); } void tst_QTreeWidget::findItems_data() |