Qt::ItemFlags TreeModel::flags(const QModelIndex &index) const{ if(index.row()==0) return ItemIsEnabled; else return Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable;}
QVariant TreeModel::data(const QModelIndex &index, int role) const{ // Если индекс невалиден, возвращается пустой элемент if(!index.isValid())return QVariant(); // Если запрашивается окраска текста элемента if(role==Qt::ForegroundRole) { TreeItem *item = getItem(index); // Логика, как нада окрашивать элементы if(item->recordtable_getrowcount()>0) return Qt::black; else return Qt::darkGray; } // Если запрашивается содержимое текста элемента if(role==Qt::DisplayRole || role== Qt::EditRole) { TreeItem *item = getItem(index); return item->data(); } // Во всех остальных случаях возвращается пустой элемент return QVariant();}
TreeItem *item = getItem(index);
QStandardItem *item = this->itemFromIndex(index);
// Получение указателя на Item-злемент связанный с заданным QModelIndexTreeItem *TreeModel::getItem(const QModelIndex &index) const{ if (index.isValid()) { TreeItem *item = static_cast<TreeItem*>(index.internalPointer()); if (item) return item; } return rootItem;}