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

Qt Discussion :

Ouverture d'une seconde interface


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 37
    Par défaut Ouverture d'une seconde interface
    Bonjour Je conçois une IHM avec qt et je voudrais ouvrir une deuxième interface (partie forms) lorsque l'on clique sur un bouton.
    j'ai commencé à écrire ce code et cela m'indique une erreur

    .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
    #ifndef GLWIDGET_H
    #define GLWIDGET_H
     
    #include <QGLWidget>
    #include<QObject>
     
     
    QT_BEGIN_NAMESPACE
    namespace fenetre { class GLWidget; }
    QT_END_NAMESPACE
    class GlWidget : public QGLWidget
    {
        Q_OBJECT
    public:
        explicit GlWidget(QWidget *parent=0);
        void initializeGL();
        void paintGL();
        void resizeGL(int w, int h);
        int blackLight[4]={0, 0, 0, 1};
        int whitLight[4]={0, 0, 0, 1};
        int LightGrey[4]={63, 63, 63, 1};
        int DarkGrey[4]={150, 150, 150, 1};
     
    private:
        fenetre::GLWidget *ui;
     
    };
     
    #endif // GLWIDGET_H
    .cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "glwidget.h"
    #include"QGLWidget"
    #include "widget.h"
    #include "ui_widget.h"
     
    GlWidget::GlWidget(QWidget *parent):
        QGLWidget(parent),
        ui(new fenetre ::GLWidget)
     
    {
    }
    ma premiere classe s'apelle widget et ma seconde glwidget j'ai essayé d'ajouter la librairie "ui_glwidget.h" mais cela m'indique une erreur.

    voici l'erreur :

    erreur : invalid use of incomplete type 'class fenetre::GLWidget'
    ui(new fenetre ::GLWidget)
    ^~~~~~~~

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

    Tu ne dois pas modifier les noms de la classe provenant du Designer et de son namespace Ui qui sont automatiquement générés à chaque modification de l'interface (dans le fichier ui_widget.h inclus dans le .cpp. Il faut les garder tels quels.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 37
    Par défaut
    j'ai renommé "fenetre" en Ui quelle librairie dois-je ajouter dans mon cpp #include "ui_widget.h" ou #include "ui_glwidget.h" (nom de mes deux classes).

    voici maintenant mon .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
    36
    #ifndef GLWIDGET_H
    #define GLWIDGET_H
     
    #include <QGLWidget>
    #include<QObject>
     
     
    QT_BEGIN_NAMESPACE
    namespace Ui { class GLWidget; }
    QT_END_NAMESPACE
    class GlWidget : public QGLWidget
    {
        Q_OBJECT
    public:
        explicit GlWidget(QWidget *parent=0);
        void initializeGL();
        void paintGL();
        void resizeGL(int w, int h);
     
        int blackLight[4]={0, 0, 0, 1};
        int whitLight[4]={0, 0, 0, 1};
        int LightGrey[4]={63, 63, 63, 1};
        int DarkGrey[4]={150, 150, 150, 1};
     
    private:
       // QVector<QVector3D> m_vertices;
        //int vertices_by_x;
        //int vertices_by_y;
        //int vertices_by_z;
        //int quads_by_x;
        //int quads_by_y;
        Ui::GLWidget *ui;
     
    };
     
    #endif // GLWIDGET_H

    et mon cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "glwidget.h"
    #include"QGLWidget"
    #include "widget.h"
     
     
    GlWidget::GlWidget(QWidget *parent):
        QGLWidget(parent),
        ui(new Ui::GLWidget)
    {
    }
    j'ai toujours la même erreur, pourrais je avoir accès à l'option forms en faisant cette méthode ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    À toi de voir laquelle tu souhaites utiliser ici, mais vu le nom, je dirais ui_glwidget.h .

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 37
    Par défaut
    je souhaite utilisé ma classe widget quand je compile mon programme et faire appelle a ma classe qlwidget quand j'appuie sur un bouton, quand j'inclus la librairie il me dis qu'il n'y a aucun fichier ou repertoire de ce nom

  6. #6
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    Bonjour,je ne sais pas ce que tu veux faire, mais normalement tu rends (to render) des graphiques opengl donc de la 3D dans un QGLWidget donc tu ne dois pas mettre d'ui dedans.
    Les ui sont faites pour mettre des contrôles de QWidgets
    Cette classe QGLWidget est d'ailleurs obsolète,il faut utiliser QOpenGlWindow ou QOpenGlWidget si tu veux faire de la 3D dedans

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

Discussions similaires

  1. ouverture inputbox puis ouverture d'une seconde macro
    Par Pluplume dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 20/08/2019, 06h25
  2. [Débutant] ouverture d'une seconde figure.
    Par mouche-d'oz dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 26/05/2014, 10h15
  3. Ouverture d'une seconde fenêtre avec passage de variable
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 06/11/2012, 08h50
  4. Réponses: 8
    Dernier message: 05/11/2010, 08h10
  5. Réponses: 3
    Dernier message: 25/06/2007, 17h03

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