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

Bases de données Discussion :

L'accès aux données avec Qt


Sujet :

Bases de données

  1. #1
    Expert confirmé
    L'accès aux données avec Qt
    Bonjour,

    Cet article explique comment gérer l'interaction entre votre application et un quelconque système de gestion de base de données au travers du framework Qt. J'aborde plusieurs façons de faire en partant de la moins efficace vers la plus intéressante.

    N'hésitez pas à laisser des commentaires et donner vos conseils.



    http://alain-defrance.developpez.com...icles/Qt/SGBD/
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  2. #2
    Rédacteur

    petites remarques convernant le paragraphe "III-A. Les drivers disponibles" :

    * le driver QOCI est dorénavant en open source avec la derniére version de Qt
    * Il existe un driver qt Oracle open source QOpenOCCI, développé par Andrew White qui est basé sur la librairie open source C OCILIB et dont les performances sont de loin très supérieures à QOCI (c'est pas moi qui le dit mais l'équipe qui développe Kevora, un IDE DB open source basé sur Qt).

    Concernant les critiques faite sur ODBC (que je partage aussi), je tiens à préciser, tout de même, que la modélisation C++ de Qt pour encapsuler les accès DB est en elle même peu performante... Ma fois, c'est un autre débat...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Expert confirmé
    Salut,

    C'est corrigé pour QOCI, et j'ai rajouté une partie sur QOpenOCI.

    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  4. #4
    Futur Membre du Club
    Je suis actuellement en stage et il m'est demandé de faire un logiciel gérant une base de données à partir de QT. Je m'aide de votre tutoriel mais il y a juste un élément que je n'arrive pas à comprendre. Dans la partie VI-B, pour faire la liaison entre le modèle et le tableau vous faites :

    ui->tableAvecModelRubrique->setModel(model);

    La réponse est surement évidente mais je n'arrive pas à comprendre à quoi correspond "tableAvecModelRubrique" ?

    Merci

  5. #5
    Expert éminent sénior
    C'est un TableView. On lui adjoint ensuite le bon modèle avec setModel.
    Pour lier à un QTableView il suffit d'appeler la méthode héritée QAbstractItemView::setModel(QAbstractItemModel *). Nous pouvons appeler d'autres méthodes permettant de masquer certaines colonnes, définir un critère de tri, et bien d'autres choses non abordées ici.
    QTableView hérite de QAbstractItemView, et possède donc la fonction membre setModel.

  6. #6
    Futur Membre du Club
    Merci.
    C'est bien ce que je pensais à la base mais je ne comprend pas le fonctionnement des lignes :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
      ui->tableAvecModelRubrique->setModel(model); 
      ui->tableAvecModelRubrique->setColumnHidden(RUBRIQUE_ID, true); 
      ui->tableAvecModelRubrique->resizeColumnsToContents();


    En déclarant tableAvecModelRubrique comme étant un TableView, j'ai des erreurs de compilations me disant :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
     error: 'class Ui::Widget' has no member named 'tableAvecModelRubrique'


    Cette erreur me paraît logique, c'est pour cela que je ne comprend pas le fonctionnement des trois lignes de codes.

  7. #7
    Expert confirmé
    Hum cette instance est directement générée par Qt Designer (Qt Creator n'existait pas encore :p).
    En effet si on tente d'appeler une méthode d'une instance qui n'existe pas, ca ne compilera pas :p
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  8. #8
    Expert éminent sénior
    Citation Envoyé par Guugu Voir le message
    Merci.
    C'est bien ce que je pensais à la base mais je ne comprend pas le fonctionnement des lignes :

    ui->tableAvecModelRubrique->setModel(model);
    ui->tableAvecModelRubrique->setColumnHidden(RUBRIQUE_ID, true);
    ui->tableAvecModelRubrique->resizeColumnsToContents();

    En déclarant tableAvecModelRubrique comme étant un TableView, j'ai des erreurs de compilations me disant :

    error: 'class Ui::Widget' has no member named 'tableAvecModelRubrique'

    Cette erreur me paraît logique, c'est pour cela que je ne comprend pas le fonctionnement des trois lignes de codes.
    Comme le dit Alain, le "ui" est la classe générée par Qt Designer suite à
    uic -o <nom du fichier de sortie>.h <nom du fichier designer>.ui
    N'hésite pas à consulter la FAQ ou les tutos d'introduction à Qt qu'on a sur http://qt.developpez.com/tutoriels/ pour en savoir plus