0

嗨,我有一个 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。没关系。但是我想使用像 sublist[0].member 这样的列表类型。我不能将它引用到 listview。

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

编辑 我添加了子列表类:`class SubObject :public QObject { Q_OBJECT public: SubObject(const QString &lesson,QObject *parent = 0): QObject(parent), course(lesson) {}

     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`
4

0 回答 0