SubsysModel::SubsysModel(QObject *parent) :
QObject(parent)
{
modelSUBSYS = new QStandardItemModel();
rootSubTree = modelSUBSYS->invisibleRootItem();
modelSUBSYS->invisibleRootItem()->insertColumns(0,2);
modelSUBSYS->setHorizontalHeaderLabels(QStringList()<<"data"<<"id");
}
void SubsysModel::InitModel(const QList<ItemSubTree> *itemList)
{
//QList<QStandardItem*> itemDataNameID;
indexList=new QList<QModelIndex>;
for(int i=0;i<=itemList->count()-1;i++)
{
rootSubTree->appendRow(itemList->at(i).nameSys);
for(int j=0;j<=itemList->at(i).device.count()-1;j++)
{
itemList->at(i).nameSys->appendRow(itemList->at(i).device.at(j).deviceName);
indexList->append(itemList->at(i).device.at(j).deviceName->index());
for(int k=0;k<=itemList->at(i).device.at(j).dataName.count()-1;k++)
{
itemList->at(i).device.at(j).deviceName->appendRow(itemList->at(i).device.at(j).dataName.at(k));
}
}
}
modelSUBSYS->setData(modelSUBSYS->index(0,1,indexList->at(0)),QString("test")); // [1]
}
QStandardItemModel* SubsysModel::SetModel()
{
return modelSUBSYS;
}
itemList - список обектов с данными, для дерева.
Все само дерево нормально создается, проблема (уже запутался) в добавлении (редактирование) второго столбца.
Пытался так [1]
modelSUBSYS->setData(modelSUBSYS->index(0,1,indexList->at(0)),QString("test"));
И еще как-то уже если честно забыл..
подскажите пожалуйста, просто данные 2 столбца будут изменять со временем работы программы, и надо их редактировать.
Проблема решена#include "subsysmodel.h"
SubsysModel::SubsysModel(QObject *parent) :
QObject(parent)
{
modelSUBSYS = new QStandardItemModel();
rootSubTree = modelSUBSYS->invisibleRootItem();
modelSUBSYS->invisibleRootItem()->insertColumns(0,2);
modelSUBSYS->setHorizontalHeaderLabels(QStringList()<<"data"<<"id");
}
void SubsysModel::InitModel(const QList<ItemSubTree> *itemList)
{
indexList=new QMap<int,QModelIndex>;
for(int i=0;i<=itemList->count()-1;i++)
{
rootSubTree->appendRow(itemList->at(i).nameSys);
for(int j=0;j<=itemList->at(i).device.count()-1;j++)
{
itemList->at(i).device.at(j).deviceName->insertColumns(0,2);
itemList->at(i).nameSys->appendRow(itemList->at(i).device.at(j).deviceName);
for(int k=0;k<=itemList->at(i).device.at(j).dataName.count()-1;k++)
{
itemList->at(i).device.at(j).deviceName->appendRow(itemList->at(i).device.at(j).dataName.at(k));
indexList->insert(itemList->at(i).device.at(j).idData.at(k),itemList->at(i).device.at(j).dataName.at(k)->index());
}
}
}
}
QStandardItemModel* SubsysModel::SetModel()
{
return modelSUBSYS;
}
void SubsysModel::SetData(int id, QVariant data)
{
modelSUBSYS->setData(indexList->value(id).sibling(indexList->value(id).row(),1),data);
}
indexList - QMap<int,QModelIndex>* indexList;