Название: помогите разобраться с QAbstractItemModel
Отправлено: Ximik от Март 15, 2009, 17:23
Задача: построить дерево на базе QTreeView. Собственно имеется список elements с объектами, которые нужно вывести. И каждый объект имеет несколько свойств, которые нужно вывести как child ветки-объекта. Делаю это так MyListModel::MyListModel(QObject *parent) : QAbstractItemModel(parent) { this->columns << tr("1") << tr("2") << tr("3"); } int MyListModel::rowCount(const QModelIndex &parent) const { if (!parent.isValid()) return elements.count(); //Количество объектов if (parent.column() == 0) return elements.at(parent.row())->count(); //Количество свойств return 0; } int MyListModel::columnCount(const QModelIndex &parent) const { if (!parent.isValid()) return this->columns.count(); return 1; } bool MyListModel::hasChildren(const QModelIndex &parent) const { if (!parent.isValid() || parent.internalId() == -1) return true; return false; } QModelIndex MyListModel::index(int row, int column, const QModelIndex &parent) const { if (!parent.isValid()) return createIndex(row, column, -1); //Это объект, ставлю ему id=-1 return createIndex(row, column, parent.row()); //Это свойство объекта, ставлю ему id по номеру объекта } QModelIndex MyListModel::parent(const QModelIndex &child) const { QVariant id = child.internalId(); if (id != -1){ //Если это свойство - у него есть parent bool *ok; return createIndex(id.toInt(ok), 0, -1); //Отдаю родителя } return QModelIndex(); //Отдаю корень }
Выводится только объекты, без свойств. эм Криво как-то объяснил, но, надеюсь, поняли о чём я. :(
Название: Re: помогите разобраться с QAbstractItemModel
Отправлено: EhTemka от Март 17, 2009, 19:04
C++ (Qt) int MyListModel::columnCount(const QModelIndex &parent) const { if (!parent.isValid()) return this->columns.count(); return 1; }
Попробуй тут возвращать одинаковое количество колонок и для детей и для родителей C++ (Qt) int MyListModel::columnCount(const QModelIndex &parent) const { return this->columns.count(); }
Хотя не уверен, что поможет ??? Можно весь класс с объявлением увидеть?
Название: Re: помогите разобраться с QAbstractItemModel
Отправлено: Ximik от Март 19, 2009, 10:52
Нашёл таки проблему QModelIndex MyListModel::parent(const QModelIndex &child) const { int id = child.internalId(); if (id != -1) return createIndex(id, 0, -1); //Отдаю родителя return QModelIndex(); //Отдаю корень } так работает
|