Partage
  • Partager sur Facebook
  • Partager sur Twitter

Couleur dans un QSQLTABLEMODEL

colorier une ligne

    22 janvier 2019 à 12:03:18

    Bonjour,

    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();  
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
    RL
      22 janvier 2019 à 16:25:17

      Salut,

      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 ;)

      • Partager sur Facebook
      • Partager sur Twitter
      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
        23 janvier 2019 à 17:15:11

        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();
        }
        



        • Partager sur Facebook
        • Partager sur Twitter
        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.
        • Editeur
        • Markdown