Mit einem QStyledItemDelegate auf einem QListView mit QSqlQueryModel
Ich habe eine QListView, dass eine QSqlQueryModel set als Modell. Wie kann ich einen QStyledItemDelegate, um die Anpassung des QListView den Zeilen' Auftritt (z.B. Karte 2 text-Zeilen) ?
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" );
db.setDatabaseName( "test.db" );
if( !db.open() )
{
qDebug() << db.lastError();
qFatal( "Failed to connect." );
}
qDebug( "Connected!" );
QSqlQueryModel *sqlModel = new QSqlQueryModel;
sqlModel->setQuery("SELECT * FROM entries");
mListWidget->setModel(sqlModel);
Im wesentlichen, ich denke, was ich tun müssen, um irgendwie "passen" die Rollen der Tabelle db die Felder, um der Lage sein, um die Daten aus der QStyledItemDelegate, mit so etwas wie dieses:
void ListViewDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
[...]
QString headerText = qvariant_cast<QString>(index.data(headerRole));
QString subText = qvariant_cast<QString>(index.data(subHeaderRole));
[...]
}
Dank!
InformationsquelleAutor gmpi | 2011-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie sicherlich verwenden können QStyledItemDelegate für benutzerdefinierte Element der Zeichnung. QModelIndex hat eine Referenz auf das Modell-Objekt, das Sie verwenden können, um "Einträge" Datensatz-Felder. Sie haben auch neu zu definieren Modells sizeHint Methode zu erhöhen, Gegenstände Größe, wenn Sie brauchen, um mehr Daten, dann ist eine single-Daten. Andere dann, dass es mehr oder weniger trivial.
Pls, sehen Sie, wenn Sie ein Beispiel unten funktionieren würde, Sie:
Die test-Datenbank festlegen, wird hier definiert:
Modell-und listview-definition:
hoffe das hilft, Grüße
erstellen Sie eine pixmap für das Symbol: Symbol.pixmap(...); dann verwenden Sie Maler->drawPixmap(pos, pixmap), um es zu zeichnen
InformationsquelleAutor serge_gubenko