IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Recupérer l'état d'un QCheckBox dans une QtableView pour enregistrer les données dans une base sqlite
    Bonjour,

    Voilà çà fait deux que je galère la dessus.

    J'ai un QtableView qui m'affiche un modele QSqlTableModel. A ceci j'ai enfin réussi à ajouter une colonne sup dans laquelle il y a un QCheckBox. Mon problème de pouvoir récupérer l'état du QCheckBox (principalement savoir si il est checked ou pas) pour enregistrer des données dans ma base sqlite.

    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    #include "PariEnCours.h"
    #include "CreateConnection.h"
     
    PariEnCours::PariEnCours()
    {
        affiche();
    }
     
    void PariEnCours::affiche()
    {
        //Connexion DB
        CreateConnection w("localhost", "essai.db", "root", "");
     
        m_Modele = new QSqlTableModel;
        m_Modele->setTable("pari");
        m_Modele->select();
        m_Modele->setFilter("resultat='en cours'");
     
        m_Modele->setHeaderData(1, Qt::Horizontal, tr("date"));
        m_Modele->setHeaderData(2, Qt::Horizontal, tr("mise"));
        m_Modele->setHeaderData(3, Qt::Horizontal, tr("cote"));
        m_Modele->setHeaderData(4, Qt::Horizontal, tr("resultat"));
        m_Modele->setHeaderData(5, Qt::Horizontal, tr("gain"));
        m_Modele->insertColumn(6);
        m_Modele->setHeaderData(6, Qt::Horizontal, tr("selection"));
     
        m_Vue = new QTableView;
        m_Vue->setModel(m_Modele);
        m_Vue->setWindowTitle("Pari en cours");
        m_Vue->setFixedSize(800,500);
        m_Vue->hideColumn(0);
     
     
        // Ajout d'une checkbox à chaque ligne
        for (int row = 0; row < m_Vue->model()->rowCount(); row++)
        {
            QCheckBox *check = new QCheckBox;
            m_Vue->setIndexWidget(m_Vue->model()->index(row,6), check);
        }
     
        m_Vue->show();
     
        QObject::connect(m_Modele, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(actionSlot(QModelIndex, QModelIndex)));
     
     
        //Fermeture connexion DB
        w.close();
     
    }
     
    void PariEnCours::actionSlot(QModelIndex topLeft, QModelIndex bottomRight)
    {
        qDebug() << topLeft << bottomRight;
    }

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    • Commence par récupérer le QModelIndex correspondant avec QTableView::indexAt : QModelIndex index = m_Vue->indexAt( QPoint(x,y) ); avec x, y les coordonnées du QCheckBox dans la table.
    • Puis à partir de ce QModelIndex, récupère le widget correspondant avec QTableView:::indexWidget QWidget *widget = tableView->indexWidget(index);
    • Il te suffit alors d'effectuer un cast pour récupérer ton QCheckBox : QCheckBox *checkBox = qobject_cast<QCheckBox*>(widget);
    • Tu obtiens alors son état par sa méthode checkState : checkBox->checkState() qui sera soit Qt::Unchecked, soit Qt::Checked.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour.

    Merci de t'intéresser à mon problème. Je regarde tout çà et je reviens

    Merci aussi pour les tutoriels et cours Qt c'est super

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/09/2012, 23h53
  2. Réponses: 7
    Dernier message: 31/03/2011, 11h38
  3. Réponses: 3
    Dernier message: 06/09/2007, 14h31
  4. Réponses: 4
    Dernier message: 22/05/2007, 14h42
  5. Enregistrer les données d'une table dans un fichier texte word ou excel
    Par maamar1979 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 14/06/2006, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo