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 :
mainwindow.h
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.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 #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
j'ai quelques questions à vous poser :
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() { }
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 :
avant d'utiliser le widget ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2QPushButton pushButton;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pushButton.setText("xgdfgdgf");
Partager