| Код | 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; Это сообщение отредактировал(а) Kirys - 5.8.2012, 17:48
|