У меня есть подклассы QAbstractListModel
с двумя столбцами, что-то вроде:
class MediaList : public QAbstractListModel {
public:
QVariant data(QModelIndex const& index, int role) const override
{
if (index.column() == 0)
return QVariant(m_songs.at(index.row()));
if (index.column() == 1)
return QVariant(m_videos.at(index.row()));
return QVariant();
}
int rowCount(QModelIndex const& parent = QModelIndex()) const override
{
return m_videos.size() < m_songs.size() ? m_songs.size() : m_videos.size();
}
private:
QStringList m_songs;
QStringList m_videos;
};
Очевидно, что это еще не все, но это основная идея. Затем я открываю его для QML через функцию context
в Qt. Теперь в QML у меня есть что-то вроде этого:
ListView {
model: myMediaList
delegate: Text {
text: modelData
}
}
И он правильно показывает «песни» в виде списка текстовых строк. Но как мне сказать, чтобы вместо этого использовался столбец 1, чтобы вместо этого я мог видеть «видео»?