Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. relation beetwen Qtableview and modele
Forum Updated to NodeBB v4.3 + New Features

relation beetwen Qtableview and modele

Scheduled Pinned Locked Moved Unsolved General and Desktop
pistache
4 Posts 3 Posters 688 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    lacombe
    wrote on last edited by
    #1

    Good morning,

    How color lines of my view with a model. I don't know to do.

    Thank you, this is my code.

    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);
          }
    
    JonBJ 1 Reply Last reply
    0
    • L lacombe

      Good morning,

      How color lines of my view with a model. I don't know to do.

      Thank you, this is my code.

      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);
            }
      
      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by
      #2

      @lacombe
      Not in answer to your question, but:

             QVariant monModele::data ( const QModelIndex & index, int role)const
            {
               ...
               return monModele::data(index,role);
            }
      

      That's infinite recursion! You'll want something more like

               return QAbstractTableModel::data(index,role);
      
      1 Reply Last reply
      1
      • L Offline
        L Offline
        lacombe
        wrote on last edited by
        #3

        Merci de votre réponse, mais comment s'opère la relation entre sqlModele (sqlModele-> setQuery (* mRequete)) et la coloration de ce modèle. Pouvez vous s'il vous plait m'indiquer les instructions.

        Merci de votre aide.

        1 Reply Last reply
        0
        • VRoninV Offline
          VRoninV Offline
          VRonin
          wrote on last edited by
          #4

          You can use "Role Mask Proxy Model" from https://github.com/VSRonin/QtModelUtilities/tree/dev You can find an example of colouring the background here: https://github.com/VSRonin/QtModelUtilities/blob/dev/examples/exem_RoleMaskProxyModel/exem_rolemaskhighlight.cpp

          I'm also trying to get it merged into Qt itself: https://codereview.qt-project.org/245572/

          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
          ~Napoleon Bonaparte

          On a crusade to banish setIndexWidget() from the holy land of Qt

          1 Reply Last reply
          1

          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved