Ich mache gerade einen Versuch, Daten aus eine SqlQuery in eine Datenbank-unabhängige Klasse zwischenzuspeichern. Diese DB-unabhängige Klasse wird dann an eine andere Klasse/Funktion weitergereicht.
Ich habe das mit einem QVector gelöst, der Objekte von Typ QVariant aufnimmt. QVariant deshalb, weil die ja auch von der QSqlQuery geliefert werden und es mich innerhalb dieser Klasse nicht interessiert was genau in den Daten steckt. Erst in der Zielklasse werden die Daten dann entsprechend gewandelt.
Hier mal die (recht einfache) Klasse:
Code: Alles auswählen
#ifndef VARIANTLIST_H_
#define VARIANTLIST_H_
#include <QVariant>
#include <QVector>
class VariantList
{
public:
VariantList();
~VariantList();
void setColumns(qint32 columns);
qint32 columns();
qint32 rows();
void append(const QVariant& value);
const QVariant& at(qint32 row, qint32 column);
void clear();
private:
QVector<QVariant> m_list;
qint32 m_columns;
};
#endif /* VARIANTLIST_H_ */Code: Alles auswählen
#include "variantlist.h"
VariantList::VariantList()
{
}
VariantList::~VariantList()
{
}
void VariantList::setColumns(qint32 columns)
{
m_columns = columns;
m_list.clear();
}
qint32 VariantList::columns()
{
return m_columns;
}
qint32 VariantList::rows()
{
qint32 l = m_list.size();
qint32 rows = l / m_columns;
return rows;
}
void VariantList::append(const QVariant& value)
{
m_list.append(value);
}
const QVariant& VariantList::at(qint32 row, qint32 column)
{
qint32 i = (row * m_columns) + column;
Q_ASSERT(i >= 0 && i < m_list.size());
return m_list.at(i);
}
void VariantList::clear()
{
m_list.clear();
}Sieht jemand von euch evtl. eine Schwachstelle oder noch Optimierungspotential?
Danke schon mal für Hinweise!
Gruß
Christian