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

Discussion :

Problème d'affichage de tableaux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de donkeyquote
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 195
    Par défaut Problème d'affichage de tableaux
    Salut a tout le monde,

    Je suis debutant en Qt. J'ai installe sur ubuntu l'EDI Qt Creator de Nokia qui parait assez costaud...

    J'ai commence a bidouiller un peu et tout marchair nickel jusqu'a ce que j'ai essaye de faire des tableaux. J'ai fait mon propre example et j'ai pas fait apparaitre de tableu, donc je me suis dit que le probleme etait entre mon ecran et ma chaise, donc j'ai pris des exemples sur internet et finalement l'exemple de l'editeur, mais toujours pas de tableau qui apparait sur la fenetre (cf. piece jointe).

    J'ai cherche un peu sur le net mais je n'ai rien trouve. Je ne sais pas si c'est un probleme de packages manquantes ou c'est l'editeur qui foire.


    Ma config :
    Qt Creator 1.3.1
    Based on Qt 4.6.2 (32 bit)

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    #include <QtGui>
    #include <QtSql>
     
    #include "tableeditor.h"
     
    //! [0]
    TableEditor::TableEditor(const QString &tableName, QWidget *parent)
        : QDialog(parent)
    {
        model = new QSqlTableModel(this);
        model->setTable(tableName);
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
        model->select();
     
        model->setHeaderData(0, Qt::Horizontal, tr("ID"));
        model->setHeaderData(1, Qt::Horizontal, tr("First name"));
        model->setHeaderData(2, Qt::Horizontal, tr("Last name"));
     
    //! [0] //! [1]
        QTableView *view = new QTableView;
        view->setModel(model);
    //! [1]
     
    //! [2]
        submitButton = new QPushButton(tr("Submit"));
        submitButton->setDefault(true);
        revertButton = new QPushButton(tr("&Revert"));
        quitButton = new QPushButton(tr("Quit"));
     
        buttonBox = new QDialogButtonBox(Qt::Vertical);
        buttonBox->addButton(submitButton, QDialogButtonBox::ActionRole);
        buttonBox->addButton(revertButton, QDialogButtonBox::ActionRole);
        buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole);
    //! [2]
     
    //! [3]
        connect(submitButton, SIGNAL(clicked()), this, SLOT(submit()));
        connect(revertButton, SIGNAL(clicked()), model, SLOT(revertAll()));
        connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));
    //! [3]
     
    //! [4]
        QHBoxLayout *mainLayout = new QHBoxLayout;
        mainLayout->addWidget(view);
        mainLayout->addWidget(buttonBox);
        setLayout(mainLayout);
     
        setWindowTitle(tr("Cached Table"));
    }
    //! [4]
     
    //! [5]
    void TableEditor::submit()
    {
        model->database().transaction();
        if (model->submitAll()) {
            model->database().commit();
        } else {
            model->database().rollback();
            QMessageBox::warning(this, tr("Cached Table"),
                                 tr("The database reported an error: %1")
                                 .arg(model->lastError().text()));
        }
    }
    //! [5]
    Pouvez vous me donner un coup de main avec ca ?

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 19
    Par défaut
    Malheureusement, je ne peux pas t'aider si ce n'est te signaler qu'il existe des versions plus à jour du framework Qt et de Qt Creator.
    Mais je doute que ça règle le problème.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Par défaut
    Bonjour,

    On a visiblement pas tout le code mais es tu certain que la connection a lieu avec la base ?
    Cela pourrait expliquer le carré blanc.

  4. #4
    Membre confirmé Avatar de donkeyquote
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 195
    Par défaut
    Oui, en effet il y a pas tout le code, il manquait :

    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
     
    #include <QApplication>
     
    //#include "../connection.h"
    #include "tableeditor.h"
     
    //! [0]
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        /*if (!createConnection())
            return 1;*/
     
        TableEditor editor("person");
        editor.show();
        return editor.exec();
    }
    //! [0]
    Et oui, j'ai commente la connexion. Mais je devrais voir au moins les headers et le "grid" pour pouvoir faire un input, non?

    Sinon, comment je pourrais faire un tableau par exemple pour afficher des donnees hardcodees ou permettant de rentrer des valeurs a la main ? Cela pourrais me permettre de tester au moins s'il y a un probleme avec l'element graphique des tableaux.

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Par défaut
    Salut,

    Je n'ai jamais utilisé les modèles QSqlTableModel mais tu peux vérifier si les appels à setHeaderData retournent true ou false puis vérifier que model->columnCount() retourne 3.

    Bon courage.

  6. #6
    Membre confirmé Avatar de donkeyquote
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 195
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if( model->setHeaderData(0, Qt::Horizontal, tr("ID")) )
        std::cout<< "TRUE" << std::endl;
    else
        std::cout<< "FALSE" << std::endl;
     
        model->setHeaderData(1, Qt::Horizontal, tr("First name"));
        model->setHeaderData(2, Qt::Horizontal, tr("Last name"));
     
    std::cout<<model->columnCount() << std::endl;
    J'obtiens "FALSE" et "0"

    Pourquoi ?

Discussions similaires

  1. [VxiR2] Problème d'affichage de tableaux
    Par nawal59 dans le forum Webi
    Réponses: 10
    Dernier message: 25/01/2011, 13h24
  2. [XIR2] Problème d'affichage de tableaux
    Par julien2602 dans le forum Webi
    Réponses: 9
    Dernier message: 10/10/2008, 12h06
  3. Réponses: 4
    Dernier message: 11/04/2008, 12h56
  4. Problème d'affichage de tableaux
    Par Jasmine80 dans le forum Bioinformatique
    Réponses: 2
    Dernier message: 02/02/2007, 11h37
  5. Réponses: 3
    Dernier message: 07/04/2006, 16h06

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