Partage
  • Partager sur Facebook
  • Partager sur Twitter

Relation entre QtableView et modele

Comment établir un lien

    28 janvier 2019 à 17:41:17

    Bonjour,

    Comment colorier des lignes de ma vue avec un modèle. Je ne vois pas du tout comment faire.

    Merci de votre aide, voici mon code complet. Je pense que ça manque de cohérence.

    fenetre.h

    #ifndef FENETRE_H
    #define FENETRE_H
    
    #include <QWidget>
    #include <QSqlDatabase>
    #include <QSqlQuery>
    #include <QSqlQueryModel>
    #include <QSqlTableModel>
    #include "monmodele.h"
    
    namespace Ui {
    class Fenetre;
    }
    
    class monModele;
    
    class Fenetre : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit Fenetre(QWidget *parent = 0);
        ~Fenetre();
    
        void ouvrirBase();
    
    
        private:
        Ui::Fenetre *ui;
    
        QSqlQuery *mRequete;
            QSqlQueryModel *sqlModele;
            QSqlDatabase mDatabase;
            
            };
    
    #endif // FENETRE_H

    fenetre.cpp

    #include "fenetre.h"
    #include "monmodele.h"
    #include "ui_fenetre.h"
    
    Fenetre::Fenetre(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Fenetre)
    {
        ui->setupUi(this);
    }
    
    Fenetre::~Fenetre()
    {
        delete ui;
    }
    
    void Fenetre::ouvrirBase()
    {
        QString file = "C:\\test\\bd1.accdb";
                 mDatabase = QSqlDatabase::addDatabase("QODBC");
                  QString dataBaseString = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=" + file;
                  mDatabase.setDatabaseName(dataBaseString);
    
                  mDatabase.open();
    
                  mRequete = new QSqlQuery();
                      mRequete->prepare("SELECT Numero, Nom FROM Compte WHERE Numero > 10 and Numero < 25");
       mRequete->exec();
    
    
       sqlModele = new QSqlTableModel;
       sqlModele->setQuery(*mRequete);
    
    
       ui->tableView->setModel(sqlModele);
    
         ui->tableView->show();
    }
    


    monmodele.h

    #ifndef MONMODELE_H
    #define MONMODELE_H
    
    #include <QObject>
    #include <QAbstractTableModel>
    #include <QColor>
    
    
    class monModele : public QAbstractTableModel
    {
    
    public:
    
           monModele(QObject *parent = 0);
    
           QVariant data ( const QModelIndex & index, int role)const;
    
    
      private:
    
    
    };
    
    
    #endif // MONMODELE_H
    


    monmodele.cpp

    #include "monmodele.h"
    #include <QSqlTableModel>
    
    
             monModele::monModele(QObject *parent) :  QAbstractTableModel(parent)
             {
                  }
    
               QVariant monModele::data ( const QModelIndex & index, int role)const
              {
                 if(role==Qt::BackgroundColorRole)
                 {
                    const QVariant value(data(index,Qt::DisplayRole));
                    return QVariant(QColor(Qt::red));
                 }
                 return monModele::data(index,role);
              }






    • Partager sur Facebook
    • Partager sur Twitter
    RL
      29 janvier 2019 à 11:28:43

      Salut,

      je suis intervenu il y a quelques jours à peine sur une discussion exactement similaire sur un autre forum.

      Comme tout ce qui est important y a été dit, autant te laisser la lire ;)

      Mais ce n'est pas une raison pour hésiter à poser des questions si tu es encore confronté à une difficulté quelconque ;)

      • 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
        29 janvier 2019 à 11:56:41

        Bonjour,

        J'ai bien lu mais je ne sais pas comment faire le lien entre le modèle obtenu par sqlModele->setQuery(mRequete) et le data(...) de QAbstractTableModel pour la mise en forme. Dans beaucoup de forum je dois avouer que je ne trouve pas de réponses. Alors je fais de l'approximatif, pas facile quand on débute avec la MVC.

        Je suis un boulet!  mais si vous aviez le code pour corriger cet exemple, je pense que je comprendrais.

        Merci une fois de plus.

        • Partager sur Facebook
        • Partager sur Twitter
        RL

        Relation entre QtableView et modele

        × 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