Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QStandardItemModel, QTreeView создание записей во


Автор: Kirys 5.8.2012, 15: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;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)