ich habe mir jetzt Listen genauer angeschaut und habe leichte Verständnigsprobleme, was die Implementation eines zugehörigen Model betrifft.
Ich möchte eine Instanz einer Klasse ContentElement in ein QListWidget übergeben. Die Klasse sieht wie folgt aus:
Code: Alles auswählen
#ifndef __CONTENTELEMENT_H_
#define __CONTENTELEMENT_H_
#include <QString>
#include <QStringList>
class ContentElement : public QObject
{
public:
ContentElement() {}
virtual ~ContentElement() {}
// setters
inline void setTitle(const QString &value) { title = value; }
inline void setSubtitle(const QString &value) { subtitle = value; }
inline void setPage(const QString &value) { page = value; }
inline void setContent(const QString &value) { content = value; }
inline void setBookletNumber(int value) { booklet = value; }
inline void setYearNumber(int value) { year = value; }
// getters
inline QString getTitle() { return title; }
inline QString getSubtitle() { return subtitle; }
inline QString getPage() { return page; }
inline QString getContent() { return content; }
inline int getBooklet() { return booklet; }
inline int getYear() { return year; }
private:
QString title; // the titles string
QString subtitle; // the subtitles string
QString page; // the pages string
QString content; // the contents string
int booklet; // the booklets string
int year; // the year
QStringList findList; // the list of identifiers
};
//Q_DECLARE_METATYPE(ContentElement)
#endifDie Rollen geben nun, wenn ich das richtig verstanden habe, an, für wen das Objekt sein soll.
Ok und wie fülle ich nun mein QVariant? Wie bekomme ich meine selektierten Objekte dann zurück? Ich stehe da leider auf dem Schlauch und wäre für jede Hilfe dankbar.
Als Beispiel für mein Model:
Code: Alles auswählen
QVariant ListModel::data(const QModelIndex &index, int role) const
{
QVariant v(QVariant::UserType);
if(index.isValid() && index.row() >= 0 && index.row() < entities.size() && role == Qt::DisplayRole) {
ContentElement e = entities.at(index.row());
return e.getBooklet();
}
return v;
}
bool ListModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (index.isValid() && role == Qt::EditRole) {
//ContentElement e = value.value<ContentElement>();
//entities.replace(index.row(), e);
emit dataChanged(index, index);
return true;
}
return false;
}