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 :

Qt Designer et QTableView

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Qt Designer et QTableView
    Bonjour à toutes et tous .

    J'ai créé un fichier MainWindow , ajouté QTableWidget avec qt designer . Je ne parviens pas à l'afficher avec un bouton en tant que fenêtre secondaire ( j'affiche une fenêtre vide .).

    Ou dois-je déclarer mon tableau ?? Dans le .h du dossier designer et comment ??

    Oui ... Merci d'avance .

    Je suis complétement perdu .

    Cordialement.

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    C'est un peu vague, il faudrait plus de détails pour pouvoir t'aider.

    En premier lieu tu parles de MainWindow, une QMainWindow est comme son nom l'indique la fenêtre principale d'une application, si tu veux afficher une nouvelle fenêtre il est préférable d'utiliser une QDialog (dans le designer, tu crées une "boîte de dialogue" plutôt qu'une "fenêtre principale").

    Quand tu dis que tu affiches une fenêtre vide, tu fais ça comment ?
    Voilà un lien vers la doc qui explique comment faire pour utiliser ce que tu crées dans le Designer, dans ton code C++ :
    http://qt.developpez.com/doc/4.7/des...tance-approach
    (il y a plusieurs façons de faire, mais celle là est selon moi la plus claire)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut QtDesigner
    Bonjour à toutes et tous .

    @YoniBlond Merci .
    Quand tu dis que tu affiches une fenêtre vide, tu fais ça comment ?
    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
    #ifndef FENQUATRE_H
    #define FENQUATRE_H
     
    #include <QWidget>
     
    namespace Ui {
        class FenQuatre;
    }
     
    class Dialog : public QDialog
    {
        Q_OBJECT
     
    public:
       explicit Dialog(QWidget *parent = 0);
        ~Dialog();
     
    private:
        Ui::FenQuatre *ui;
    };
     
    #endif


    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
    #include "FenPrincipale.h"
    #include "FenQuatre.h"
     
    FenQuatre::FenQuatre(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::FenQuatre)
     
      {
        ui->setupUi(this);
    }
     
    FenQuatre::~FenQuatre()
    {
        delete ui;
    }


    PS: Je galère avec l'anglais .

    Cordialement.

  4. #4
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Le code semble bon. Si tu as bien mis ce qu'il faut au niveau du designer, le fait d'appeler setupUi devrait initialiser tout ça. Dans le titre tu parles de QTableView mais ton message de QTableWidget, ce n'est pas la même chose. Une vue (Q..View) a besoin d'un modèle pour fonctionner, c'est un peu plus compliqué.

    Donc là comme ça je ne vois pas ce qui cloche. Procède par étapes simples, essaye de voir à quel niveau ça ne fait pas ce que tu veux. D'abord ouvrir une fenêtre vide, puis essayer avec un label.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut QTableWidget
    Bonjour à toutes et tous .

    @YoniBlond , Merci .

    Pour le titre je me suis trompé , QTableWidget ....
    Si tu as bien mis ce qu'il faut au niveau du designer, le fait d'appeler setupUi devrait initialiser tout ça
    Code main.cpp
    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 <QtGui>
    #include <QApplication>
    #include <QWidget>
    #include "FenPrincipale.h"
    #include "FenQuatre.h"
     
     
    int main(int argc, char **argv)
    {
        QApplication app (argc, argv);
        FenPrincipale fen;
         //Ui::FenQuatre ui; Erreur ...
        fen.show();
     
        return app.exec();
     
    }
    Cordialement.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Qt Designer signals et slots .
    Bonsoir à toutes et tous .

    Désole de vous ennuyer , mais je ne parviens pas à comprendre .

    Dans la fenêtre de paramétrage signals et slots de Désigner j'ai écrit :

    Sender : openbutton
    Signal : clicked()
    Receiver :mainwindow
    slot :showDialog

    Mais cela ne fonctionne pas ... ??? pourquoi ??

    Si vous pouviez m'aider ce serait sympa .


    Cordialement

  7. #7
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Le slot showDialog n'existe pas à ce que je sache, qu'est-ce que c'est ? Un slot que tu as écrit toi même ?

    Dans tous les cas je ne comprends pas bien ce que tu fais. Pour ouvrir une nouvelle boîte de dialogue, il faut créer un nouvel objet (QDialog, ou un objet que tu auras fait dans Qt Designer).
    Tu as regardé le tuto ? http://irmatden.developpez.com/tutoriels/dialog/

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Qt Designer et QTableWidget
    Bonsoir à toutes et tous .

    @YoniBlond , merci .

    Ce que je cherche à faire depuis plusieurs jours : Ouvrir une fenêtre réalisée avec Qt Designer à l' aide d'un bouton .
    J'ai lu des tonnes d'exemples (sans trouver le bon) .
    Une fenêtre toute simple (MainWindow) avec deux boutons : Open et Quit .
    Un fichier minimal nommé Dialog avec un bouton Quit .
    Le bouton Quit de MainWindow fonctionne . Impossible de connecter Open .

    J'ai para-métré mes pushButton dans signal et slots de Qt Designer :
    Pour Quit : sender/quitButton signal/clicked receiver/mainWindow slot/close
    cela fonctionne.
    Pour Open : sender/openButton signal/clicked receiver/MainWindow slot/showDialoq .
    Impossible de le connecter ..

    Oui je connais le tuto et je l'ai réalisé de plusieurs façon , ca marche .

    Si tu sait pourquoi ??? Merci d'avance .

    Cordialement.

  9. #9
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Désolé de me répéter mais QMainWindow n'a pas de slot showDialog. Ce slot qui va afficher ta boîte de dialogue est forcément propre à ton appli, donc il va falloir coder cette partie toi même. C'est à dire ajouter un slot dans ta classe contenant la mainwindow, et dans le corps de ce slot (un slot est une méthode de classe) tu devras créer ton objet "boîte de dialogue" et lui appeler la fonction show ou exec (pour une boîte modale) selon ce que tu veux.

    Exactement ce qui est décrit dans cette partie du tuto :
    http://irmatden.developpez.com/tutoriels/dialog/#LV

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut QtDesigner et QTableView
    Bonjour à toutes et tous .

    @YoniBlond . Merci pour ton aide .

    J'ai bien compris ce que tu me dit mais je ne parviens pas à le mettre en pratique :
    mainwindow.cpp
    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
    #include <QMetaObject>
    #include <QDialog>
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
     
    MainDialog::MainDialog(QWidget *parent):
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
     
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    mainwindow.h
    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
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
    #include <QPushbutton>
    #include <QDialog>
    #include "dialog.h"
    #include "ui_mainwindow.h"
     
    namespace Ui {
        class MainWindow ;
    }
     
    class MainDialog : public QDialog
    {
        Q_OBJECT
     
    public:
         MainDialog(QWidget *parent = 0):QDialog(parent),dlg(0)
            {
                    dlg = new Dialog(this);
     
                    }
     
    private:
      void on_connectShow_Ui_Dialog()
      {
          dlg->setModal(true);
          dlg->show();
      }
        Dialog *dlg;
        Ui::MainWindow *ui;
    };
     
    #endif // MAINWINDOW_H
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <QtGui/QApplication>
    #include "mainwindow.h"
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainDialog *md = new MainDialog;
        md->show();
     
        return a.exec();
    }
    Si je met le contenu du fichier "mainwindow.cpp" en commentaire une fenêtre vide s'ouvre ...

    J'ai parcouru plusieurs forum et cette question reviens souvent *et reste sans réponse ?????
    *= Ouverture d'une fenêtre ui avec un bouton .

    Merci d'avance .

  11. #11
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Il s'agit d'un problème de C++ de base ici, tu dois revoir comment fonctionne une classe C++. Il y a plusieurs incohérences dans ton code.

    Premièrement, on dirait que tu es embrouillé entre boîte de dialogue et fenêtre principale. Si j'ai bien compris ton idée, tu souhaites une fenêtre principale avec un bouton qui ouvre une nouvelle boîte de dialogue. Ces deux fenêtres sont distinctes !

    Ta classe MainDialog a un nom ambigu, elle hérite de QDialog mais contient un ui qui se nomme mainwindow. Tu ne peux pas mélanger QDialog et QMainWindow, car ils n'ont pas de relation enfant/parent.

    Tu définis deux fois le constructeur de MainDialog ! Dans ton .h et dans ton .cpp, tu dois avoir des warnings sur ce point car ça fait n'importe quoi (ce qui explique qu'en commentant ton .cpp ça se passe différemment).

    En bref tu dois faire une classe MainWindow qui contient le ui correspondant à ta mainwindow (fait dans le Designer), et une autre classe Dialog qui contiendra le ui correspondant à ta boîte de dialogue. Ensuite comme tu l'as presque fait, il faudra créer un objet de boîte de dialogue dans le slot de ton bouton et l'afficher.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Qt Designer et QTableWidget
    Bonsoir à toutes et tous .

    YoniBlond . Merci .
    Tu définis deux fois le constructeur de MainDialog ! Dans ton .h et dans ton .cpp, tu dois avoir des warnings sur ce point car ça fait n'importe quoi (ce qui explique qu'en commentant ton .cpp ça se passe différemment).
    Oui d'accord si je passe .cpp en commentaire il n'y plus que .h qui fonctionne et cela me donne une fenêtre vide ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Premièrement, on dirait que tu es embrouillé entre boîte de dialogue et fenêtre principale.
    Vous ,vous en êtes rendu compte .. je nage .
    Tu définis deux fois le constructeur de MainDialog ! Dans ton .h et dans ton .cpp, tu dois avoir des warnings sur ce point car ça fait n'importe quoi
    Je ne parviens pas à comprendre ce que je doit écrire dans .cpp ???

    Encore merci .

    Cordialement.

  13. #13
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    En C++ on ne met le corps d'une fonction dans le .h, mais dans le .cpp. Sans ses bases là il sera vraiment difficile de comprendre Qt qui ajoute des concepts à assimiler.

    Je te conseille vivement de lire les tutos comme celui ci : http://cpp.developpez.com/cours/cpp-objet
    surtout cette partie : http://cpp.developpez.com/cours/cpp-objet/#LIII
    Pour les points encore obscurs il y a la FAQ C++.

    Et après ça, pour ton problème, relis mon message précédent, ça devrait te paraître plus clair. En sachant que chaque "design" fait est inclu dans une classe avec l'attribut ui. Bon courage !

  14. #14
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Surtout, je pense à ce guide de mon parrain : http://alp.developpez.com/tutoriels/debuter-cpp/. Tout ce qu'il faut pour bien débuter en C++, ça se trouve avec ça.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Qt Designer et QTableWidget
    Bonjour à toutes et tous .

    MERCI .

    J'étais colère et vexé du "manque d'infos" et ""d'aides"" de votre part .
    Cela m'a permis de comprendre ?? et surtout de trouver la solution .

    .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MainDialog(QWidget *parent =0);
    ~MainWindow();
    .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    MainDialog::MainDialog(QWidget *parent):QDialog(parent),dlg(0),
    ui(new Ui::MainDialog)
    {
    ui->setupUi(this);
    dlg = new Dialog();
    // Et la suite ..
    }


    Pour les (Comme moi .) apprentis programmeurs.

    Cordialement.

  16. #16
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Sauf ton respect, je ne pense pas que ce soit à conseiller aux autres "apprentis programmeurs", les liens au-dessus le sont bien plus.

    Cordialement.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Qt Designer et QTableView
    Bonsoir à toutes et tous .

    @Troudhyl
    Sauf ton respect, je ne pense pas que ce soit à conseiller aux autres "apprentis programmeurs",
    Oui tout à fait d'accord avec toi , ce morceau de code fonctionne et chacun est libre d'en faire l'usage qu'il désir .

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. [power designer et Sybase] trigger
    Par mr_qno dans le forum Sybase
    Réponses: 4
    Dernier message: 12/07/2006, 18h32
  3. [OpenTools, designer] CmtSubComponent et superClasse
    Par kainor dans le forum JBuilder
    Réponses: 4
    Dernier message: 04/03/2003, 11h32
  4. Réponses: 3
    Dernier message: 09/02/2003, 01h09
  5. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21

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