qabstractitemmodel如何将子列表引用到模型

时间:2016-05-30 14:21:29

标签: qt qml qabstractitemmodel qabstractlistmodel

嗨我有qabstractitemmodel的虚拟数据元素,如:

 m_roleNames.insert(FirstNameRole, QByteArray("firstName"));
  m_roleNames.insert(LastNameRole, QByteArray("lastName"));
  m_roleNames.insert(SubListRole, QByteArray("subList"));   

QVariant SimpleListModel::data(const QModelIndex &index,
                                            int role) const {
    if (!index.isValid())
        return QVariant(); // Return Null variant if index is invalid
    if (index.row() > (m_items.size()-1) )
        return QVariant();

    DataObject *dobj = m_items.at(index.row());
    switch (role) {
    case Qt::DisplayRole: // The default display role now displays the first name as well
    case FirstNameRole:
        return QVariant::fromValue(dobj->first);
    case LastNameRole:
        return QVariant::fromValue(dobj->last);
    case SubListRole:
        return QVariant::fromValue(dobj->sublist);
    default:
        return QVariant();
     }
    }

我可以将firstName引用到listview。它没关系。但是我想使用像子列表[0]这样的列表类型。我不能将它引用到listview。

  ....
   ...
   ..
   .
    text: firstName
          color: "black"
          font.bold: true
                           }
                       Text {
text: subList[1]
          color: "black"
                       }
                   }
           }
        }
        }
    .
    ..
    ...
    ....

修改 我添加了子列表类:`class SubObject:public QObject     {         Q_OBJECT     上市:         SubObject(const QString& lesson,QObject * parent = 0):             QObject的(母体),             教训(教训)         {}

     const QString lesson;

private:


//    bool operator==(const SubObject*  &other) const {
//           return other->lesson == lesson;
//    }

};

class DataObject :public QObject{

    Q_OBJECT

public:
  DataObject(const QString &firstName,
             const QString &lastName,
             const QList<SubObject*>   &sublist):
     first(firstName),
     last(lastName),
    sublist(sublist){}
  QString first;
  QString last;
  QList<SubObject*> sublist;
};

#endif // DATAOBJECT_H`

0 个答案:

没有答案