У меня есть класс контейнера, который является типом данных в классе treeItem.
Моя древовидная структура работает нормально, но как мне извлечь значение типа данных Контейнер из выбранного элемента.
Так я определил свои функции для данных.
Насколько я понимаю из примера представления QT в виде дерева, мы возвращаем данные в функции Data, которая не может быть объектом, но должна иметь конкретное значение.
class Container
{
private:
std::string stdstrContainerName;
std::string stdstrPluginType;
public:
Container();
Container(std::string , std::string , int , float);
Container(const Container& obj);
~Container();
std::string GetName();
std::string GetType();
void SetName(std::string stdstrName);
};
Q_DECLARE_METATYPE( Container )
class TreeItem
{
public:
/* Other Functions of the class
*/
Container data() const;
bool setData(const Container &data);
private:
QList<TreeItem*> childItems;
Container itemData;
TreeItem* parentItem;
};
QVariant TreeModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (role != Qt::DisplayRole && role != Qt::EditRole)
return QVariant();
TreeItem *item = getItem(index);
// i wanted to return data from here.
return QString::fromStdString(item->data().GetName()); // if i
//return Container as datatype or return Container as QVariant than
//the tree structure does not work.
// It only works if i have a concrete value rather that a object.
}
// data function of TreeItem
Container TreeItem::data() const
{
return itemData;
}