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 :

Utiliser QLayout, QGridLayout ou juste des lignes ?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut Utiliser QLayout, QGridLayout ou juste des lignes ?
    Bonjour ,
    j'ai une widget (central widget) où je fait le rendu (affichage) de mon scène
    je voudrais que l'affichage être comme ça

    Nom : 1000.jpg
Affichages : 193
Taille : 766,7 Ko

    où mon widget est découpé sous un ensembles de veiwports
    je peux faire les viewports facilement mais je trouve un problème pour dessiner les contours de mes viewports
    par exemple je peux faire ça

    Nom : 1001.jpg
Affichages : 160
Taille : 19,3 Ko

    vous pouvez voir que j'ai travaillé avec deux viewports mais il n y a pas des lignes qui ou les contours comme il n y a pas le nom de viewport de chaque viewport

    Alors,
    est ce que la meilleure méthode pour mettre des contours est des nom de veiwports (comme lla première image)
    est l'utilisation d'un gridlayout? si oui est ce que vous pouvez m'expliquer un peu comment ça
    s'il existe une autre idée je serais contente si vous me l'expliquer

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 141
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Vous pouvez par exemple, afficher chaque viewport dans un widget de Qt différent.
    Sinon, vous pouvez aussi afficher le contour, avec OpenGL, tout simplement.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut
    Bonjour,
    en effet j'ai crée un autre projet (pour juset tester une chose ) et j'ai fait comme ça
    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
     
    //#include "qq.h"
    #include <QtGui/QApplication>
    #include <QHBoxLayout>
    #include <QGridLayout>
    #include <QGroupBox>
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QWidget w;
     
     
        QHBoxLayout* mainlayout = new QHBoxLayout;
     
        QGridLayout* rightSide = new QGridLayout;
     
        rightSide->addWidget(new QGroupBox("0,0"), 0, 0 );
        rightSide->addWidget(new QGroupBox("0,1"), 0, 1 );
        rightSide->addWidget(new QGroupBox("0,2"), 0, 2 );
        rightSide->addWidget(new QGroupBox("1,0"), 1, 0 );
        rightSide->addWidget(new QGroupBox("1,1"), 1, 1 );
        rightSide->addWidget(new QGroupBox("1,2"), 1, 2 );
        rightSide->addWidget(new QGroupBox("2,0"), 2, 0 );
        rightSide->addWidget(new QGroupBox("2,1"), 2, 1 );
        rightSide->addWidget(new QGroupBox("2,2"), 2, 2 );
    	rightSide->addWidget(new QGroupBox("3,0"), 3, 0 );
        rightSide->addWidget(new QGroupBox("3,1"), 3, 1 );
        rightSide->addWidget(new QGroupBox("3,2"), 3, 2 );
     
        mainlayout->addWidget(new QGroupBox("big frame"));
        mainlayout->addLayout(rightSide);
     
        w.setLayout(mainlayout);
     
        w.show();
     
        return a.exec();
    }
    il fonctionne bien et il me donne une interface comme je veux
    revenons maintenant à mon projet
    où je fait comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    MainWindow::MainWindow()
    {
        ogreWidget = new OgreWidget(this);
        setCentralWidget(ogreWidget);
    ...............
    dans ogrewidget j'ai les fonctions d'initialisation ogre,gestion viewport,gestion souris...................
    quand je coller le premier code dans mon projet
    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
     
    MainWindow::MainWindow()
    {
        ogreWidget = new OgreWidget(this);
        setCentralWidget(ogreWidget);
    	createModel();
     
       // createActionMenus();
    	////////////////////////////////////////////////////
    	 QHBoxLayout* mainlayout = new QHBoxLayout;
     
        QGridLayout* rightSide = new QGridLayout;
     
        rightSide->addWidget(new QGroupBox("0,0"), 0, 0 );
        rightSide->addWidget(new QGroupBox("0,1"), 0, 1 );
        rightSide->addWidget(new QGroupBox("0,2"), 0, 2 );
        rightSide->addWidget(new QGroupBox("1,0"), 1, 0 );
        rightSide->addWidget(new QGroupBox("1,1"), 1, 1 );
        rightSide->addWidget(new QGroupBox("1,2"), 1, 2 );
        rightSide->addWidget(new QGroupBox("2,0"), 2, 0 );
        rightSide->addWidget(new QGroupBox("2,1"), 2, 1 );
        rightSide->addWidget(new QGroupBox("2,2"), 2, 2 );
    	rightSide->addWidget(new QGroupBox("3,0"), 3, 0 );
        rightSide->addWidget(new QGroupBox("3,1"), 3, 1 );
        rightSide->addWidget(new QGroupBox("3,2"), 3, 2 );
     
        mainlayout->addWidget(new QGroupBox("big frame"));
        mainlayout->addLayout(rightSide);
     
        ogreWidget.setLayout(mainlayout);
    	///////////////////////////////////////////////////////////////////////
     
    }
    il m'affiche ce message
    error C2228: left of '.setLayout' must have class/struct/union
    1> type is 'OgreWidget *'
    1> did you intend to use '->' instead?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 141
    Billets dans le blog
    150
    Par défaut
    1> did you intend to use '->' instead?
    Suivre les conseils du compilateur n'est pas toujours une option.
    ogreWidget.setLayout(mainlayout); en ogreWidget->setLayout(mainlayout);
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut
    en effet j'ai réglé le problème comme ça
    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
     
    ogreWidget = new OgreWidget(this);  
     
     
         QHBoxLayout* mainlayout = new QHBoxLayout;  
     
        QGridLayout* rightSide = new QGridLayout;  
     
        rightSide->addWidget(new QGroupBox("0,0"), 0, 0 );  
        rightSide->addWidget(new QGroupBox("0,1"), 0, 1 );  
        rightSide->addWidget(new QGroupBox("0,2"), 0, 2 );  
        rightSide->addWidget(new QGroupBox("1,0"), 1, 0 );  
        rightSide->addWidget(new QGroupBox("1,1"), 1, 1 );  
        rightSide->addWidget(new QGroupBox("1,2"), 1, 2 );  
        rightSide->addWidget(new QGroupBox("2,0"), 2, 0 );  
        rightSide->addWidget(new QGroupBox("2,1"), 2, 1 );  
        rightSide->addWidget(new QGroupBox("2,2"), 2, 2 );  
        rightSide->addWidget(new QGroupBox("3,0"), 3, 0 );  
        rightSide->addWidget(new QGroupBox("3,1"), 3, 1 );  
        rightSide->addWidget(new QGroupBox("3,2"), 3, 2 );  
     
    mainlayout->addWidget(ogreWidget);  
    QWidget *central = new QGroupBox("My Scene", this);  
    central->setLayout(mainlayout);  
    setCentralWidget(central);  
        mainlayout->addLayout(rightSide);  
     
    }
    mais voilà ce que j'ai obtenue

    J'ai fait le code en haut pour mettre les petit viewports dans les petit "rightSide" mais je sais pas
    il m'as affiché tout les viewports dans la partie left
    je creé mes viewports dans la class OgreWidget comme ça
    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
     
        void OgreWidget::createViewports(void)  
        {  
            mWindow->addViewport(mCamera, 0, 0, 0, 0.5, 1); // large left half viewport  
           int columns = 3;  
           int rows = 4;  
           for(int y = 0; y < rows; y++)  
              for(int x = 0; x < columns; x++)  
              {  
                 mWindow->addViewport(mCamera,   
                    x + y * columns + 1, // each viewport needs a unique zorder value  
                    0.5f + (0.5f / columns) * x, // left edge  
                    (1.0f / rows) * y, // top edge  
                    0.5f / columns,  // tile width  
                    1.0f / rows); // tile height  
              }  
        }
    avez vous une idée comment faire ce que je veux (mettre les petit viewport où il y a les cube (ils sont crées par la fonction "createViewports") dans les petit "rightSide" ?

  6. #6
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Par défaut
    Si vous n'avez pas compris mon problème je vais réexpliquer mon problème:
    1-j'ai crée des viewport dans ma classe Ogrewidget à l'aide de fonction "create viewport" (son code est dans mon 3 post) cette fonction va découpé mon windows en sous vues ( 1 grands et des autres plus petit ) et parce que je voudrais voir le nom du camera et les bordures de chaque view j'ai utilisé un QGridLayout, et des QHBoxLayout (le code aussi est en haut ) pour mettre le grand vue à droite et les autres petite viewport dans les rightSide(c-a-d normalement je vais voir les petit cubes dans les petit QHBoxLayout((0,0),(0,1).............) et dans "mainlayout" je vais voir le grand cube (grand vue) c'est tout mais mon problème c'st que je voir tout les viewport dans le "mainlayout" et les autres QHBoxLayout sont vides
    avez vous compris maintenant le problème? est ce qu'il a une solution ?

Discussions similaires

  1. [DATA] Utilisation de lag pour supprimer des lignes
    Par Invité dans le forum SAS Base
    Réponses: 7
    Dernier message: 23/06/2011, 15h25
  2. [LabView 8.5] Utilisation des lignes muliticolonnes
    Par yoann23 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 10/04/2008, 11h11
  3. Quel composant utiliser pour afficher rapidement des lignes de texte?
    Par Rodrigue dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 13/02/2008, 14h45
  4. ajouter supprimer des lignes en utilisant TABLE de ADF
    Par mans27 dans le forum JDeveloper
    Réponses: 6
    Dernier message: 15/06/2007, 11h43
  5. [VBA-E] Sélection des lignes en utilisant AUJOURDHUI()
    Par gabygaby dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/04/2007, 05h05

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