Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Kirill_m от Август 05, 2012, 14:40



Название: QStandardItemModel, QTreeView создание записей во втором столбце
Отправлено: Kirill_m от Август 05, 2012, 14:40
Код:
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;