Hallo Zusammen,
derzeit versuche ich Daten aus einer MYSQL Datenbank in einem Grid darzustellen. Jedoch finde ich keinen Lösungsansatz (Beispiel) mit den höheren SQL Funktionen (Datenbanktreiber unabhängig), welche read only sind.
Edit: Lösung für read Only
view->setEditTriggers(QAbstractItemView::NoEditTriggers);
Auch möchte ich die Anzeige von einzelnen Datenbank-Felder selber gestalten.
Beispiel:
In der Datenbank steht ein Wert "Status" als "Small Int" mit dem Wert 0...4. In der Anzeige vom Grind soll dann aber stehen "gekommen", "gegangen", ....
Mein QT Buch verweisst hier auf die ausführliche Online-Dok., nur finde ich den Einsprung noch nicht wirklich hierfür.
Kann man das SQLTableModel dafür verwenden und entsprechend "umbiegen". Wie sieht das ganze bei grossen Datenmengen aus?
Gruss R.
[gelöst] SQLTableModel read only und eigene Darstellung...
[gelöst] SQLTableModel read only und eigene Darstellung...
Zuletzt geändert von Ritchie am 30. März 2011 19:01, insgesamt 2-mal geändert.
Re: SQLTableModel read only und eigene Darstellung der ...
War so nicht gedacht, der folgende Text sollte eigentlich nur unten angefügt werden
Edit: Lösung für read Only ist !
view->setEditTriggers(QAbstractItemView::NoEditTriggers);
Hier die Lösung für die eigene Darstellung von Werten (Beispielhaft)
Einfach von der QSqlTableModel eine eigene Klasse ableiten und
die Funktionen data() selber erstellen.
Include
C-Code
Habe ich das Falsch gesehen ?
Gruss R.
Edit: Lösung für read Only ist !
view->setEditTriggers(QAbstractItemView::NoEditTriggers);
Hier die Lösung für die eigene Darstellung von Werten (Beispielhaft)
Einfach von der QSqlTableModel eine eigene Klasse ableiten und
die Funktionen data() selber erstellen.
Include
Code: Alles auswählen
class ModelUserLog : public QSqlTableModel
{
Q_OBJECT
public:
ModelUserLog ( QObject *parent = 0, QSqlDatabase db = QSqlDatabase());
QVariant data(const QModelIndex &index, int role) const;
};
Code: Alles auswählen
ModelUserLog::ModelUserLog( QObject *parent, QSqlDatabase db) : QSqlTableModel(parent,db)
{
}
QVariant ModelUserLog::data(const QModelIndex &index, int role) const
{
QVariant value = QSqlTableModel::data(index, role);
if (value.isValid() && role == Qt::DisplayRole)
{
if (index.column() == 0)
{
return value.toString().prepend("#");
}
else
{
if (index.column() == 2)
{
return value.toString().toUpper();
}
}
}
if (role == Qt::TextColorRole && index.column() == 1)
return qVariantFromValue(QColor(Qt::blue));
return value;
}
Gruss R.