コード例 #1
0
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();
}
コード例 #2
0
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;
		}
	}
}