Je débute avec les mises en forme des cellules QSQLTABLEMODEL. Sur beaucoup de forums le résultat est donné avec le return d'une méthode. Et après c'est là que je bloque, à partir d'où appeler ces méthodes ? Par exemple j'ai trouvé ce code:
Comment appliquer cette méthode dans cet exemple ? Avez vous des exemples de code ?
Merci de votre aide.
QVariant MyModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
{
if(!index.isValid() || index.row() < 0 || index.row() >= m_list.size())
return QVariant();
switch(index.column()){
case COL_1: //Column 1
switch(role){
case Qt::DisplayRole:
return m_list.at(index.row());
case Qt::BackgroundRole:
if(m_list.at(index.row) > 50)
return QColor(Qt::red);
case Qt::ForegroundRole:
if(m_list.at(index.row) > 50)
return QColor(Qt::white);
}
case COL_2:
...
}
return QVariant();
}
La fonction data() de ton modèle est automatiquement appelée par le mécanisme qui s'occupe de l'affichage de la vue à laquelle le modèle est rattaché.
Si bien que, une fois que tu as défini le comportement de cette fonction, "tout ce qui te reste à faire", c'est d'indiquer explicitement à la vue (QTableView ou similaire) qu'elle doit utiliser ton modèle. Le reste se fera automatiquement à chaque fois que les fonction draw ou update seront appelées par la vue
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
Merci pour ce renseignement, voilà mon code complet, la compilation est bonne mais encore cela ne fonctionne toujours pas (pas de coloration en rouge).
Merci de votre aide;
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QString file = "C:\\DIVERS\\bd1.accdb";
QSqlDatabase mDatabase;
mDatabase = QSqlDatabase::addDatabase("QODBC");
QString dataBaseString = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=" + file;
mDatabase.setDatabaseName(dataBaseString);
mDatabase.open();
mModele = new QSqlTableModel(this);
mRequete = new QSqlQuery();
mRequete->prepare("SELECT Numero, Nom FROM Compte WHERE Numero > 10 and Numero < 25");
mRequete->exec();
mModele->setQuery(*mRequete);
ui->tableView->setModel(mModele);
ui->tableView->show();
}
Widget::~Widget()
{
delete ui;
QVariant Widget::data ( const QModelIndex & index, int role = Qt::DisplayRole )const
{
if(role==Qt::BackgroundRole)
{
return QColor(Qt::red);
}
return QVariant();
}
void Widget::on_pushButton_clicked()
{
QModelIndex idx;
idx = mModele->index(1,1,QModelIndex());
mModele->data(idx,Qt::BackgroundRole);
ui->tableView->setModel(mModele);
ui->tableView->show();
}
RL
Couleur dans un QSQLTABLEMODEL
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.