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

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Septembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 12
    Par défaut Les QLayout sont-ils vraiment une bonne pratique ? Trop de pointeurs pour déclarer les widgets ?
    Bonjour,

    Je suis un utilisateur débutant de Qt 5.1 j'ai essayé de créer une forme de fenêtre un peu complexe pour s'entrainer a utiliser les QLyouts.

    J'ai mis l'image du résultat visuel dans la pièce jointe et voici les codes:

    main.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include "mainwindow.h"
    #include <QApplication>
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.showMaximized();
     
        return a.exec();
    }
    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
    36
    37
    38
    39
     
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
    #include <QCoreApplication>
    #include <QIcon>
    #include <QWidget>
    #include <QHBoxLayout>
    #include <QVBoxLayout>
     
     
     
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
     
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
     
    private:
        QWidget *widget1;
        QWidget *widget2;
        QWidget *widget3;
        QWidget *widget4;
        QWidget *widget5;
        QWidget *widget6;
        QWidget *widget7;
        QWidget *widget8;
        QWidget *widget9;
        QVBoxLayout *vBoxLayout1;
        QVBoxLayout *vBoxLayout2;
        QHBoxLayout *hBoxLayout1;
        QHBoxLayout *hBoxLayout2;
     
    };
     
    #endif // MAINWINDOW_H
    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
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    #include "mainwindow.h"
     
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        this->setWindowIcon(QIcon(QCoreApplication::applicationDirPath() + "/icon.png"));
        this->setWindowTitle("Ma première vraie fenêtre");
     
        widget1 = new QWidget;
        vBoxLayout1 = new QVBoxLayout;
     
        widget2 = new QWidget;
        widget3 = new QWidget;
        widget4 = new QWidget;
        widget5 = new QWidget;
        widget6 = new QWidget;
        widget7 = new QWidget;
        widget8 = new QWidget;
        widget9 = new QWidget;
     
        widget2->setStyleSheet("background-color:#69bf3a;");
        widget3->setStyleSheet("background-color:#009fff;");
        widget4->setStyleSheet("background-color:#ffc484;");
        widget5->setStyleSheet("background-color:#db0000;");
        widget6->setStyleSheet("background-color:#f1df11;");
        widget7->setStyleSheet("background-color:#e2a4ff;");
        widget8->setStyleSheet("background-color:#ffffff;");
        widget9->setStyleSheet("background-color:#000000;");
     
     
        QSizePolicy sizePolicy_widget2(QSizePolicy::Preferred, QSizePolicy::Preferred);
        sizePolicy_widget2.setVerticalStretch(1);
        widget2->setSizePolicy(sizePolicy_widget2);
        vBoxLayout1->addWidget(widget2);
     
        QSizePolicy sizePolicy_widget3(QSizePolicy::Preferred, QSizePolicy::Preferred);
        sizePolicy_widget3.setVerticalStretch(5);
        widget3->setSizePolicy(sizePolicy_widget3);
        vBoxLayout1->addWidget(widget3);
     
        hBoxLayout1 = new QHBoxLayout;
        widget3->setLayout(hBoxLayout1);
     
        QSizePolicy sizePolicy_widget4(QSizePolicy::Preferred, QSizePolicy::Preferred);
        sizePolicy_widget4.setHorizontalStretch(2);
        widget4->setSizePolicy(sizePolicy_widget4);
        hBoxLayout1->addWidget(widget4);
     
        QSizePolicy sizePolicy_widget5(QSizePolicy::Preferred, QSizePolicy::Preferred);
        sizePolicy_widget5.setHorizontalStretch(4);
        widget5->setSizePolicy(sizePolicy_widget5);
        hBoxLayout1->addWidget(widget5);
     
        vBoxLayout2 = new QVBoxLayout;
        widget5->setLayout(vBoxLayout2);
     
        QSizePolicy sizePolicy_widget6(QSizePolicy::Preferred, QSizePolicy::Preferred);
        sizePolicy_widget6.setVerticalStretch(4);
        widget6->setSizePolicy(sizePolicy_widget6);
        vBoxLayout2->addWidget(widget6);
     
        QSizePolicy sizePolicy_widget7(QSizePolicy::Preferred, QSizePolicy::Preferred);
        sizePolicy_widget7.setVerticalStretch(1);
        widget7->setSizePolicy(sizePolicy_widget7);
        vBoxLayout2->addWidget(widget7);
     
        hBoxLayout2 = new QHBoxLayout;
        widget6->setLayout(hBoxLayout2);
     
        QSizePolicy sizePolicy_widget8(QSizePolicy::Preferred, QSizePolicy::Preferred);
        sizePolicy_widget8.setHorizontalStretch(3);
        widget8->setSizePolicy(sizePolicy_widget8);
        hBoxLayout2->addWidget(widget8);
     
        QSizePolicy sizePolicy_widget9(QSizePolicy::Preferred, QSizePolicy::Preferred);
        sizePolicy_widget9.setHorizontalStretch(1);
        widget9->setSizePolicy(sizePolicy_widget9);
        hBoxLayout2->addWidget(widget9);
     
     
     
        widget1->setLayout(vBoxLayout1);
        this->setCentralWidget(widget1);
    }
     
    MainWindow::~MainWindow()
    {
    }
    j'ai quelques questions à vous poser :

    1- Est-ce que j'ai utilisé correctement les QLayouts pour diviser cette fenêtre ?

    2- Vous ne trouvez pas l'utilisation des QLayouts un peu trop verbeuse ?

    3- Dans un autre sujet je remarque dans les tutoriels que les développeurs Qt ont tendance de déclarer les Widgets sous forme de pointeurs. Qt s’en charger d'écrire a notre place les deletes dans le destructeur mais ou est l'intérêt de tout ça ? pour quoi ne pas faire tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QPushButton pushButton;
    avant d'utiliser le widget ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pushButton.setText("xgdfgdgf");
    Images attachées Images attachées  

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/12/2012, 13h41
  2. Débat : Les stages sont ils une bonne chose pour les jeunes
    Par pmithrandir dans le forum Politique
    Réponses: 23
    Dernier message: 27/05/2011, 01h32
  3. Réponses: 4
    Dernier message: 18/11/2010, 20h16
  4. Réponses: 16
    Dernier message: 04/09/2010, 01h17
  5. nuages de points sont-ils dans une zone??
    Par smedini dans le forum Algorithmes et structures de données
    Réponses: 26
    Dernier message: 21/02/2006, 11h01

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