Qt::ItemFlags CTreeCheckedModel::flags(const QModelIndex &index) const{ if (!index.isValid()) return Qt::ItemIsEnabled; return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable;}
QVariant CTreeCheckedModel::data(const QModelIndex &index, int role) const{ if (!index.isValid()) return QVariant(); CTreeItem *item = static_cast<CTreeItem*>(index.internalPointer()); if ( role == Qt::CheckStateRole ) { return item->checkState(); } return QVariant();}
bool CTreeCheckedModel::setData(const QModelIndex &index, const QVariant &value, int role){ if (!index.isValid()) return false; CTreeItem *item = static_cast<CTreeItem*>(index.internalPointer()); if (role == Qt::CheckStateRole) { Qt::CheckState checkState = static_cast<Qt::CheckState>(value.toInt()); item->setCheckState(checkState); return true; } return false;}
QVariant TreeModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (role != Qt::DisplayRole) return QVariant(); TreeItem *item = static_cast<TreeItem*>(index.internalPointer()); if ( role == Qt::CheckStateRole ) return item->checkState(); return item->data(index.column()); //Наверное должно быть так. }
if (index.column() == 0 && role == Qt::CheckStateRole ) return item->checkState();
QVariant TreeModel::data(const QModelIndex &index, int role) const{ if (!index.isValid()) return QVariant(); if (role != Qt::DisplayRole) return QVariant(); /*--- создается указатель на типа TreeItem для возможности обращения к данным данного типа ---*/ TreeItem *item = static_cast<TreeItem*>(index.internalPointer()); /*--- если role == Qt::CheckStateRole то запрашиваем данные у конкретного item-а, возвращаем для визуализации галочки*/ if ( role == Qt::CheckStateRole ) return item->checkState(); /*--- Вывод самих данных ячейки ---*/ return item->data(index.column());}
Qt::ItemFlags TreeModel::flags(const QModelIndex &index) const{ if (!index.isValid()) return Qt::ItemIsEnabled; Qt::ItemFlags flags; if (index.column() == 0) flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable ; if (index.column() == 1) flags |= Qt::ItemIsUserCheckable; return flags;}//___________________________________________________________QVariant TreeModel::data(const QModelIndex &index, int role) const{ if (!index.isValid()) return QVariant(); if (role != Qt::DisplayRole) return QVariant(); TreeItem *item = static_cast<TreeItem*>(index.internalPointer()); if (index.column() == 1 && role == Qt::CheckStateRole ) return item->checkState(); return item->data(index.column());}
Variant TreeModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (role != Qt::DisplayRole && role != Qt::CheckStateRole) return QVariant(); TreeItem *item = static_cast<TreeItem*>(index.internalPointer()); if (index.column() == 0 && role == Qt::CheckStateRole ) return item->checkState(); return item->data(index.column()); }
if (role != Qt::DisplayRole && role != Qt::CheckStateRole) return QVariant();
Qt::ItemFlags TreeModel::flags(const QModelIndex &index) const{ if (!index.isValid()) return Qt::ItemIsEnabled; Qt::ItemFlags flags; if (index.column() == 0) flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable; return flags;}
void QItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const{... QRect checkRect; Qt::CheckState checkState = Qt::Unchecked; value = index.data(Qt::CheckStateRole); if (value.isValid()) { checkState = static_cast<Qt::CheckState>(value.toInt()); checkRect = check(opt, opt.rect, value);...
// make sure that the item is checkable Qt::ItemFlags flags = model->flags(index); if (!(flags & Qt::ItemIsUserCheckable) || !((flags & Qt::ItemIsEnabled))) return false;
return model->setData(index, state, Qt::CheckStateRole);