Files
Misaki bb600bbbc4 first
2025-12-04 19:11:29 +08:00

111 lines
2.2 KiB
C++

#include "T_TreeItem.h"
#include <QUuid>
T_TreeItem::T_TreeItem(QString itemTitle, T_TreeItem* parent)
: QObject{parent}
{
_itemKey = QUuid::createUuid().toString().remove("{").remove("}").remove("-");
_itemTitle = itemTitle;
_pParentItem = parent;
_pIsChecked = false;
}
T_TreeItem::~T_TreeItem()
{
qDeleteAll(_pChildrenItems);
}
QString T_TreeItem::getItemKey() const
{
return _itemKey;
}
QString T_TreeItem::getItemTitle() const
{
return _itemTitle;
}
void T_TreeItem::setChildChecked(bool isChecked)
{
if (isChecked)
{
for (auto node : _pChildrenItems)
{
node->setIsChecked(isChecked);
node->setChildChecked(isChecked);
}
}
else
{
for (auto node : _pChildrenItems)
{
node->setChildChecked(isChecked);
node->setIsChecked(isChecked);
}
}
}
Qt::CheckState T_TreeItem::getChildCheckState()
{
bool isAllChecked = true;
bool isAnyChecked = false;
for (auto node : _pChildrenItems)
{
if (node->getIsChecked())
{
isAnyChecked = true;
}
else
{
isAllChecked = false;
}
Qt::CheckState childState = node->getChildCheckState();
if (childState == Qt::PartiallyChecked)
{
isAllChecked = false;
isAnyChecked = true;
break;
}
else if (childState == Qt::Unchecked)
{
isAllChecked = false;
}
}
if (_pChildrenItems.count() > 0)
{
if (isAllChecked)
{
return Qt::Checked;
}
if (isAnyChecked)
{
return Qt::PartiallyChecked;
}
return Qt::Unchecked;
}
return Qt::Checked;
}
void T_TreeItem::appendChildItem(T_TreeItem* childItem)
{
_pChildrenItems.append(childItem);
}
bool T_TreeItem::getIsHasChild() const
{
if (_pChildrenItems.count() > 0)
{
return true;
}
return false;
}
int T_TreeItem::getRow() const
{
if (_pParentItem)
{
return _pParentItem->getChildrenItems().indexOf(const_cast<T_TreeItem*>(this));
}
return 0;
}