Deprecate ItemIsTristate in favor of ItemIsAutoTristate.
This makes the behavior much more clear. You can get a tristate checkbox just by setting the CheckStateRole to PartiallyChecked, no tristate flag needed. The flag, on the other hand, enables the automatic-tristate behavior in QTreeViews (and only there), hence the new name for it. Change-Id: I18d292a8b8294c863eab806f3874d15dfb72556c Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
This commit is contained in:
parent
87155a8d65
commit
ae8406d82f
@ -80,7 +80,7 @@ void MainWindow::setupFontTree()
|
||||
QTreeWidgetItem *familyItem = new QTreeWidgetItem(fontTree);
|
||||
familyItem->setText(0, family);
|
||||
familyItem->setCheckState(0, Qt::Unchecked);
|
||||
familyItem->setFlags(familyItem->flags() | Qt::ItemIsTristate);
|
||||
familyItem->setFlags(familyItem->flags() | Qt::ItemIsAutoTristate);
|
||||
|
||||
foreach (QString style, styles) {
|
||||
QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
|
||||
|
@ -1458,7 +1458,10 @@ public:
|
||||
ItemIsDropEnabled = 8,
|
||||
ItemIsUserCheckable = 16,
|
||||
ItemIsEnabled = 32,
|
||||
ItemIsTristate = 64,
|
||||
ItemIsAutoTristate = 64,
|
||||
#if QT_DEPRECATED_SINCE(5, 6)
|
||||
ItemIsTristate = ItemIsAutoTristate,
|
||||
#endif
|
||||
ItemNeverHasChildren = 128,
|
||||
ItemIsUserTristate = 256
|
||||
};
|
||||
|
@ -2642,10 +2642,12 @@
|
||||
\value ItemIsDropEnabled It can be used as a drop target.
|
||||
\value ItemIsUserCheckable It can be checked or unchecked by the user.
|
||||
\value ItemIsEnabled The user can interact with the item.
|
||||
\value ItemIsTristate The item can show three separate states.
|
||||
\value ItemIsAutoTristate The item's state depends on the state of its children.
|
||||
This enables automatic management of the state of parent items in QTreeWidget
|
||||
(checked if all children are checked, unchecked if all children are unchecked,
|
||||
or partially checked if only some children are checked).
|
||||
\value ItemIsTristate \e{This enum value is deprecated.} Use Qt::ItemIsAutoTristate
|
||||
instead.
|
||||
\value ItemNeverHasChildren The item never has child items.
|
||||
\value ItemIsUserTristate The user can cycle through three separate states.
|
||||
This value has been added in Qt 5.5.
|
||||
|
@ -1258,7 +1258,7 @@ void QStandardItem::setCheckable(bool checkable)
|
||||
void QStandardItem::setTristate(bool tristate)
|
||||
{
|
||||
Q_D(QStandardItem);
|
||||
d->changeFlags(tristate, Qt::ItemIsTristate);
|
||||
d->changeFlags(tristate, Qt::ItemIsAutoTristate);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -159,7 +159,7 @@ public:
|
||||
void setCheckable(bool checkable);
|
||||
|
||||
inline bool isTristate() const {
|
||||
return (flags() & Qt::ItemIsTristate) != 0;
|
||||
return (flags() & Qt::ItemIsAutoTristate) != 0;
|
||||
}
|
||||
void setTristate(bool tristate);
|
||||
|
||||
|
@ -1720,12 +1720,12 @@ void QTreeWidgetItem::setData(int column, int role, const QVariant &value)
|
||||
}
|
||||
} break;
|
||||
case Qt::CheckStateRole:
|
||||
if ((itemFlags & Qt::ItemIsTristate) && value != Qt::PartiallyChecked) {
|
||||
if ((itemFlags & Qt::ItemIsAutoTristate) && 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
|
||||
Qt::ItemFlags f = itemFlags; // a little hack to avoid multiple dataChanged signals
|
||||
itemFlags &= ~Qt::ItemIsTristate;
|
||||
itemFlags &= ~Qt::ItemIsAutoTristate;
|
||||
child->setData(column, role, value);
|
||||
itemFlags = f;
|
||||
}
|
||||
@ -1760,7 +1760,7 @@ void QTreeWidgetItem::setData(int column, int role, const QVariant &value)
|
||||
model->emitDataChanged(this, column);
|
||||
if (role == Qt::CheckStateRole) {
|
||||
QTreeWidgetItem *p;
|
||||
for (p = par; p && (p->itemFlags & Qt::ItemIsTristate); p = p->par)
|
||||
for (p = par; p && (p->itemFlags & Qt::ItemIsAutoTristate); p = p->par)
|
||||
model->emitDataChanged(p, column);
|
||||
}
|
||||
}
|
||||
@ -1779,7 +1779,7 @@ QVariant QTreeWidgetItem::data(int column, int role) const
|
||||
break;
|
||||
case Qt::CheckStateRole:
|
||||
// special case for check state in tristate
|
||||
if (children.count() && (itemFlags & Qt::ItemIsTristate))
|
||||
if (children.count() && (itemFlags & Qt::ItemIsAutoTristate))
|
||||
return childrenCheckState(column);
|
||||
// fallthrough intended
|
||||
default:
|
||||
|
@ -279,7 +279,7 @@ void tst_QStandardItem::getSetFlags()
|
||||
QVERIFY(item.flags() & Qt::ItemIsUserCheckable);
|
||||
item.setTristate(true);
|
||||
QVERIFY(item.isTristate());
|
||||
QVERIFY(item.flags() & Qt::ItemIsTristate);
|
||||
QVERIFY(item.flags() & Qt::ItemIsAutoTristate);
|
||||
#ifndef QT_NO_DRAGANDDROP
|
||||
item.setDragEnabled(true);
|
||||
QVERIFY(item.isDragEnabled());
|
||||
@ -308,7 +308,7 @@ void tst_QStandardItem::getSetFlags()
|
||||
QVERIFY(item.isTristate());
|
||||
item.setTristate(false);
|
||||
QVERIFY(!item.isTristate());
|
||||
QVERIFY(!(item.flags() & Qt::ItemIsTristate));
|
||||
QVERIFY(!(item.flags() & Qt::ItemIsAutoTristate));
|
||||
#ifndef QT_NO_DRAGANDDROP
|
||||
QVERIFY(item.isDragEnabled());
|
||||
item.setDragEnabled(false);
|
||||
|
@ -1154,7 +1154,7 @@ void tst_QItemDelegate::editorEvent_data()
|
||||
|
||||
QTest::newRow("unchecked, tristate, release")
|
||||
<< (int)(Qt::Unchecked)
|
||||
<< (int)(defaultFlags | Qt::ItemIsTristate)
|
||||
<< (int)(defaultFlags | Qt::ItemIsAutoTristate)
|
||||
<< true
|
||||
<< (int)(QEvent::MouseButtonRelease)
|
||||
<< (int)(Qt::LeftButton)
|
||||
@ -1163,7 +1163,7 @@ void tst_QItemDelegate::editorEvent_data()
|
||||
|
||||
QTest::newRow("partially checked, tristate, release")
|
||||
<< (int)(Qt::PartiallyChecked)
|
||||
<< (int)(defaultFlags | Qt::ItemIsTristate)
|
||||
<< (int)(defaultFlags | Qt::ItemIsAutoTristate)
|
||||
<< true
|
||||
<< (int)(QEvent::MouseButtonRelease)
|
||||
<< (int)(Qt::LeftButton)
|
||||
@ -1172,7 +1172,7 @@ void tst_QItemDelegate::editorEvent_data()
|
||||
|
||||
QTest::newRow("checked, tristate, release")
|
||||
<< (int)(Qt::Checked)
|
||||
<< (int)(defaultFlags | Qt::ItemIsTristate)
|
||||
<< (int)(defaultFlags | Qt::ItemIsAutoTristate)
|
||||
<< true
|
||||
<< (int)(QEvent::MouseButtonRelease)
|
||||
<< (int)(Qt::LeftButton)
|
||||
|
@ -1037,7 +1037,7 @@ void tst_QTreeWidget::checkState()
|
||||
QCOMPARE(firstChild->checkState(0), Qt::Checked);
|
||||
QCOMPARE(seccondChild->checkState(0), Qt::Unchecked);
|
||||
|
||||
item->setFlags(item->flags()|Qt::ItemIsTristate);
|
||||
item->setFlags(item->flags()|Qt::ItemIsAutoTristate);
|
||||
QCOMPARE(item->checkState(0), Qt::PartiallyChecked);
|
||||
QCOMPARE(firstChild->checkState(0), Qt::Checked);
|
||||
QCOMPARE(seccondChild->checkState(0), Qt::Unchecked);
|
||||
@ -3155,11 +3155,11 @@ void tst_QTreeWidget::setSelectionModel()
|
||||
void tst_QTreeWidget::task217309()
|
||||
{
|
||||
QTreeWidgetItem item;
|
||||
item.setFlags(item.flags() | Qt::ItemIsTristate);
|
||||
item.setFlags(item.flags() | Qt::ItemIsAutoTristate);
|
||||
QTreeWidgetItem subitem1;
|
||||
subitem1.setFlags(subitem1.flags() | Qt::ItemIsTristate);
|
||||
subitem1.setFlags(subitem1.flags() | Qt::ItemIsAutoTristate);
|
||||
QTreeWidgetItem subitem2;
|
||||
subitem2.setFlags(subitem2.flags() | Qt::ItemIsTristate);
|
||||
subitem2.setFlags(subitem2.flags() | Qt::ItemIsAutoTristate);
|
||||
item.addChild(&subitem1);
|
||||
item.addChild(&subitem2);
|
||||
subitem1.setCheckState(0, Qt::Checked);
|
||||
@ -3180,7 +3180,7 @@ void tst_QTreeWidget::nonEditableTristate()
|
||||
QTreeWidget *tree = new QTreeWidget;
|
||||
QTreeWidgetItem *item = new QTreeWidgetItem();
|
||||
tree->insertTopLevelItem(0, item);
|
||||
item->setFlags(item->flags() | Qt::ItemIsTristate);
|
||||
item->setFlags(item->flags() | Qt::ItemIsAutoTristate);
|
||||
item->setCheckState(0, Qt::Unchecked);
|
||||
QTreeWidgetItem *subitem1 = new QTreeWidgetItem(item);
|
||||
subitem1->setCheckState(0, Qt::Unchecked);
|
||||
|
Loading…
x
Reference in New Issue
Block a user