QVariant ParamItemModel::data(const QModelIndex& index, int role) const { if (!index.isValid()) { return QVariant(); } TreeNode* pNode = static_cast<TreeNode*>(index.internalPointer()); ParameterBaseData* pData = static_cast<ParameterBaseData*>(pNode->getData()); switch (role) { case Qt::ToolTipRole: { ParameterData* pParameterData = static_cast<ParameterData*>(pData); Parameter* pParameter = pParameterData->getParameter(); if (pParameter) { return pParameter->getDescription(); } break; } case Qt::DisplayRole: { if (index.column()==0) { return pData->getName(); } break; } case Qt::EditRole: { if (index.column() == 1) { ParameterData* pParameterData = static_cast<ParameterData*>(pData); QVariant variant; variant.setValue(*pParameterData->getParameter()); return variant; } break; } default: { break; } } return QVariant(); }
void ParamItemModel::setDataNoUndo( const QModelIndex& index, const QVariant& newData, int role) { TreeNode* pNode = static_cast<TreeNode*>(index.internalPointer()); ParameterBaseData* pData = static_cast<ParameterBaseData*>(pNode->getData()); // Data given by the editor switch (role) { case Qt::EditRole: { switch (pData->getType()) { case ParameterBaseData::GROUP: case ParameterBaseData::PARAMETER: { ParameterData* pParameterData = static_cast<ParameterData*>(pData); const Parameter& newParameter = newData.value<Parameter>(); pParameterData->getParameter()->setValue(newParameter.getValue()); // Disable stack to avoid new undo commands QUndoStack* pStack = getUndoStack(); setUndoStack(NULL); emit dataChanged(index, index); setUndoStack(pStack); break; } default: { break; } } break; } } }