Utilisation d'un QStyledItemDelegate sur un QListView avec QSqlQueryModel
J'ai un QListView, qui a un QSqlQueryModel définir comme son modèle. Comment puis-je utiliser un QStyledItemDelegate afin de personnaliser les QListView lignes du' apparence (par exemple, afficher 2 lignes de texte) ?
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);
Essentiellement, ce que je pense que j'ai besoin de faire est de décider de "match" des rôles de la table db champs, afin d'être en mesure d'obtenir les données de la QStyledItemDelegate, en utilisant quelque chose comme ceci:
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));
[...]
}
Merci!
source d'informationauteur gmpi | 2011-03-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez certainement utiliser QStyledItemDelegate pour la coutume de l'élément de dessin. QModelIndex a une référence à l'objet de modèle que vous pouvez utiliser pour obtenir des "entrées", les champs de l'enregistrement. Vous avez également à redéfinir le modèle de sizeHint méthode pour augmenter les éléments de taille si vous avez besoin d'afficher plus de données qu'un seul de données. Alors que d'autres c'est plus ou moins frivoles.
Pls, voir si un exemple ci-dessous travaillerait vous:
La base de données de test jeu est défini ici:
modèle et listview définition:
espère que cette aide, en ce qui concerne