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);
|
QTreeWidgetItem *familyItem = new QTreeWidgetItem(fontTree);
|
||||||
familyItem->setText(0, family);
|
familyItem->setText(0, family);
|
||||||
familyItem->setCheckState(0, Qt::Unchecked);
|
familyItem->setCheckState(0, Qt::Unchecked);
|
||||||
familyItem->setFlags(familyItem->flags() | Qt::ItemIsTristate);
|
familyItem->setFlags(familyItem->flags() | Qt::ItemIsAutoTristate);
|
||||||
|
|
||||||
foreach (QString style, styles) {
|
foreach (QString style, styles) {
|
||||||
QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
|
QTreeWidgetItem *styleItem = new QTreeWidgetItem(familyItem);
|
||||||
|
@ -1458,7 +1458,10 @@ public:
|
|||||||
ItemIsDropEnabled = 8,
|
ItemIsDropEnabled = 8,
|
||||||
ItemIsUserCheckable = 16,
|
ItemIsUserCheckable = 16,
|
||||||
ItemIsEnabled = 32,
|
ItemIsEnabled = 32,
|
||||||
ItemIsTristate = 64,
|
ItemIsAutoTristate = 64,
|
||||||
|
#if QT_DEPRECATED_SINCE(5, 6)
|
||||||
|
ItemIsTristate = ItemIsAutoTristate,
|
||||||
|
#endif
|
||||||
ItemNeverHasChildren = 128,
|
ItemNeverHasChildren = 128,
|
||||||
ItemIsUserTristate = 256
|
ItemIsUserTristate = 256
|
||||||
};
|
};
|
||||||
|
@ -2642,10 +2642,12 @@
|
|||||||
\value ItemIsDropEnabled It can be used as a drop target.
|
\value ItemIsDropEnabled It can be used as a drop target.
|
||||||
\value ItemIsUserCheckable It can be checked or unchecked by the user.
|
\value ItemIsUserCheckable It can be checked or unchecked by the user.
|
||||||
\value ItemIsEnabled The user can interact with the item.
|
\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
|
This enables automatic management of the state of parent items in QTreeWidget
|
||||||
(checked if all children are checked, unchecked if all children are unchecked,
|
(checked if all children are checked, unchecked if all children are unchecked,
|
||||||
or partially checked if only some children are checked).
|
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 ItemNeverHasChildren The item never has child items.
|
||||||
\value ItemIsUserTristate The user can cycle through three separate states.
|
\value ItemIsUserTristate The user can cycle through three separate states.
|
||||||
This value has been added in Qt 5.5.
|
This value has been added in Qt 5.5.
|
||||||
|
@ -1258,7 +1258,7 @@ void QStandardItem::setCheckable(bool checkable)
|
|||||||
void QStandardItem::setTristate(bool tristate)
|
void QStandardItem::setTristate(bool tristate)
|
||||||
{
|
{
|
||||||
Q_D(QStandardItem);
|
Q_D(QStandardItem);
|
||||||
d->changeFlags(tristate, Qt::ItemIsTristate);
|
d->changeFlags(tristate, Qt::ItemIsAutoTristate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -159,7 +159,7 @@ public:
|
|||||||
void setCheckable(bool checkable);
|
void setCheckable(bool checkable);
|
||||||
|
|
||||||
inline bool isTristate() const {
|
inline bool isTristate() const {
|
||||||
return (flags() & Qt::ItemIsTristate) != 0;
|
return (flags() & Qt::ItemIsAutoTristate) != 0;
|
||||||
}
|
}
|
||||||
void setTristate(bool tristate);
|
void setTristate(bool tristate);
|
||||||
|
|
||||||
|
@ -1720,12 +1720,12 @@ void QTreeWidgetItem::setData(int column, int role, const QVariant &value)
|
|||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case Qt::CheckStateRole:
|
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) {
|
for (int i = 0; i < children.count(); ++i) {
|
||||||
QTreeWidgetItem *child = children.at(i);
|
QTreeWidgetItem *child = children.at(i);
|
||||||
if (child->data(column, role).isValid()) {// has a CheckState
|
if (child->data(column, role).isValid()) {// has a CheckState
|
||||||
Qt::ItemFlags f = itemFlags; // a little hack to avoid multiple dataChanged signals
|
Qt::ItemFlags f = itemFlags; // a little hack to avoid multiple dataChanged signals
|
||||||
itemFlags &= ~Qt::ItemIsTristate;
|
itemFlags &= ~Qt::ItemIsAutoTristate;
|
||||||
child->setData(column, role, value);
|
child->setData(column, role, value);
|
||||||
itemFlags = f;
|
itemFlags = f;
|
||||||
}
|
}
|
||||||
@ -1760,7 +1760,7 @@ void QTreeWidgetItem::setData(int column, int role, const QVariant &value)
|
|||||||
model->emitDataChanged(this, column);
|
model->emitDataChanged(this, column);
|
||||||
if (role == Qt::CheckStateRole) {
|
if (role == Qt::CheckStateRole) {
|
||||||
QTreeWidgetItem *p;
|
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);
|
model->emitDataChanged(p, column);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1779,7 +1779,7 @@ QVariant QTreeWidgetItem::data(int column, int role) const
|
|||||||
break;
|
break;
|
||||||
case Qt::CheckStateRole:
|
case Qt::CheckStateRole:
|
||||||
// special case for check state in tristate
|
// special case for check state in tristate
|
||||||
if (children.count() && (itemFlags & Qt::ItemIsTristate))
|
if (children.count() && (itemFlags & Qt::ItemIsAutoTristate))
|
||||||
return childrenCheckState(column);
|
return childrenCheckState(column);
|
||||||
// fallthrough intended
|
// fallthrough intended
|
||||||
default:
|
default:
|
||||||
|
@ -279,7 +279,7 @@ void tst_QStandardItem::getSetFlags()
|
|||||||
QVERIFY(item.flags() & Qt::ItemIsUserCheckable);
|
QVERIFY(item.flags() & Qt::ItemIsUserCheckable);
|
||||||
item.setTristate(true);
|
item.setTristate(true);
|
||||||
QVERIFY(item.isTristate());
|
QVERIFY(item.isTristate());
|
||||||
QVERIFY(item.flags() & Qt::ItemIsTristate);
|
QVERIFY(item.flags() & Qt::ItemIsAutoTristate);
|
||||||
#ifndef QT_NO_DRAGANDDROP
|
#ifndef QT_NO_DRAGANDDROP
|
||||||
item.setDragEnabled(true);
|
item.setDragEnabled(true);
|
||||||
QVERIFY(item.isDragEnabled());
|
QVERIFY(item.isDragEnabled());
|
||||||
@ -308,7 +308,7 @@ void tst_QStandardItem::getSetFlags()
|
|||||||
QVERIFY(item.isTristate());
|
QVERIFY(item.isTristate());
|
||||||
item.setTristate(false);
|
item.setTristate(false);
|
||||||
QVERIFY(!item.isTristate());
|
QVERIFY(!item.isTristate());
|
||||||
QVERIFY(!(item.flags() & Qt::ItemIsTristate));
|
QVERIFY(!(item.flags() & Qt::ItemIsAutoTristate));
|
||||||
#ifndef QT_NO_DRAGANDDROP
|
#ifndef QT_NO_DRAGANDDROP
|
||||||
QVERIFY(item.isDragEnabled());
|
QVERIFY(item.isDragEnabled());
|
||||||
item.setDragEnabled(false);
|
item.setDragEnabled(false);
|
||||||
|
@ -1154,7 +1154,7 @@ void tst_QItemDelegate::editorEvent_data()
|
|||||||
|
|
||||||
QTest::newRow("unchecked, tristate, release")
|
QTest::newRow("unchecked, tristate, release")
|
||||||
<< (int)(Qt::Unchecked)
|
<< (int)(Qt::Unchecked)
|
||||||
<< (int)(defaultFlags | Qt::ItemIsTristate)
|
<< (int)(defaultFlags | Qt::ItemIsAutoTristate)
|
||||||
<< true
|
<< true
|
||||||
<< (int)(QEvent::MouseButtonRelease)
|
<< (int)(QEvent::MouseButtonRelease)
|
||||||
<< (int)(Qt::LeftButton)
|
<< (int)(Qt::LeftButton)
|
||||||
@ -1163,7 +1163,7 @@ void tst_QItemDelegate::editorEvent_data()
|
|||||||
|
|
||||||
QTest::newRow("partially checked, tristate, release")
|
QTest::newRow("partially checked, tristate, release")
|
||||||
<< (int)(Qt::PartiallyChecked)
|
<< (int)(Qt::PartiallyChecked)
|
||||||
<< (int)(defaultFlags | Qt::ItemIsTristate)
|
<< (int)(defaultFlags | Qt::ItemIsAutoTristate)
|
||||||
<< true
|
<< true
|
||||||
<< (int)(QEvent::MouseButtonRelease)
|
<< (int)(QEvent::MouseButtonRelease)
|
||||||
<< (int)(Qt::LeftButton)
|
<< (int)(Qt::LeftButton)
|
||||||
@ -1172,7 +1172,7 @@ void tst_QItemDelegate::editorEvent_data()
|
|||||||
|
|
||||||
QTest::newRow("checked, tristate, release")
|
QTest::newRow("checked, tristate, release")
|
||||||
<< (int)(Qt::Checked)
|
<< (int)(Qt::Checked)
|
||||||
<< (int)(defaultFlags | Qt::ItemIsTristate)
|
<< (int)(defaultFlags | Qt::ItemIsAutoTristate)
|
||||||
<< true
|
<< true
|
||||||
<< (int)(QEvent::MouseButtonRelease)
|
<< (int)(QEvent::MouseButtonRelease)
|
||||||
<< (int)(Qt::LeftButton)
|
<< (int)(Qt::LeftButton)
|
||||||
|
@ -1037,7 +1037,7 @@ void tst_QTreeWidget::checkState()
|
|||||||
QCOMPARE(firstChild->checkState(0), Qt::Checked);
|
QCOMPARE(firstChild->checkState(0), Qt::Checked);
|
||||||
QCOMPARE(seccondChild->checkState(0), Qt::Unchecked);
|
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(item->checkState(0), Qt::PartiallyChecked);
|
||||||
QCOMPARE(firstChild->checkState(0), Qt::Checked);
|
QCOMPARE(firstChild->checkState(0), Qt::Checked);
|
||||||
QCOMPARE(seccondChild->checkState(0), Qt::Unchecked);
|
QCOMPARE(seccondChild->checkState(0), Qt::Unchecked);
|
||||||
@ -3155,11 +3155,11 @@ void tst_QTreeWidget::setSelectionModel()
|
|||||||
void tst_QTreeWidget::task217309()
|
void tst_QTreeWidget::task217309()
|
||||||
{
|
{
|
||||||
QTreeWidgetItem item;
|
QTreeWidgetItem item;
|
||||||
item.setFlags(item.flags() | Qt::ItemIsTristate);
|
item.setFlags(item.flags() | Qt::ItemIsAutoTristate);
|
||||||
QTreeWidgetItem subitem1;
|
QTreeWidgetItem subitem1;
|
||||||
subitem1.setFlags(subitem1.flags() | Qt::ItemIsTristate);
|
subitem1.setFlags(subitem1.flags() | Qt::ItemIsAutoTristate);
|
||||||
QTreeWidgetItem subitem2;
|
QTreeWidgetItem subitem2;
|
||||||
subitem2.setFlags(subitem2.flags() | Qt::ItemIsTristate);
|
subitem2.setFlags(subitem2.flags() | Qt::ItemIsAutoTristate);
|
||||||
item.addChild(&subitem1);
|
item.addChild(&subitem1);
|
||||||
item.addChild(&subitem2);
|
item.addChild(&subitem2);
|
||||||
subitem1.setCheckState(0, Qt::Checked);
|
subitem1.setCheckState(0, Qt::Checked);
|
||||||
@ -3180,7 +3180,7 @@ void tst_QTreeWidget::nonEditableTristate()
|
|||||||
QTreeWidget *tree = new QTreeWidget;
|
QTreeWidget *tree = new QTreeWidget;
|
||||||
QTreeWidgetItem *item = new QTreeWidgetItem();
|
QTreeWidgetItem *item = new QTreeWidgetItem();
|
||||||
tree->insertTopLevelItem(0, item);
|
tree->insertTopLevelItem(0, item);
|
||||||
item->setFlags(item->flags() | Qt::ItemIsTristate);
|
item->setFlags(item->flags() | Qt::ItemIsAutoTristate);
|
||||||
item->setCheckState(0, Qt::Unchecked);
|
item->setCheckState(0, Qt::Unchecked);
|
||||||
QTreeWidgetItem *subitem1 = new QTreeWidgetItem(item);
|
QTreeWidgetItem *subitem1 = new QTreeWidgetItem(item);
|
||||||
subitem1->setCheckState(0, Qt::Unchecked);
|
subitem1->setCheckState(0, Qt::Unchecked);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user