Bonjour,
En fait mon problème si situe au niveau de la dimension des QWidget que j'ajoute à mon QLayout (QVBoxLayout plus precisement).
Ce que je ne comprends pas, c'est que, lorsque j'ajoute un TextEdit, un QPushButton, un QSlider ou autre, ils prennent autant de place que disponible dans le layout, ce qui est normal, mais lorsque j'ajoute des QWidget (sans leurs donner de taille, donc sans resize(),setGeometry(),...) ils ne prennent pas toute la place disponible et ont une taille par defaut d'environ 500x500 (à vue d'oeil).
Ce qui est très embêtant car cela m'oblige à les resizer à la main, alors que moi je voudrais qu'ils prennent toute la place disponible automatiquement, comme les autres widgets.
Voilà un petit exemple pour illustrer mes propos :
Je ne comprends pas nonplus pourquoi lorsque j'ajoute le TextEdit au layout, le viewPanel1 ne s'affiche plus(ou est masqué).
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 #include <QApplication> #include <iostream> #include <QToolBar> #include <QWidget> #include <QMainWindow> #include <QLayout> #include <QVBoxLayout> #include <QHBoxLayout> #include <QRect> #include <QPushButton> #include <QTextEdit> #include <QSlider> using namespace ::std; int main() { int argc = 0; char** argv = NULL; QApplication app( argc, argv); QMainWindow* m_manager = new QMainWindow(); m_manager->resize(1500, 900); QWidget *centerView = new QWidget(); QVBoxLayout *layout = new QVBoxLayout(); // centerView->resize(1500, 900); QWidget* viewPanel1 = new QWidget(); // viewPanel1->resize(1500, 300); QTextEdit* text = new QTextEdit(); QSlider* slide = new QSlider(Qt::Horizontal); QPushButton b1, b2, b3; b3.setParent(viewPanel1); b3.resize(viewPanel1->width(), viewPanel1->height()); layout->addWidget(viewPanel1); // layout->addWidget(text); layout->addWidget(&b1); layout->addWidget(&b2); layout->addWidget(slide); centerView->setLayout(layout); m_manager->setCentralWidget(centerView); /* viewPanel1->show(); b1.show(); b2.show();*/ m_manager->show(); app.exec(); return 0; }
Je suis entrain de faire des recherches sur la methode setSizePolicy(), donc si quelqu'un pense que je suis sur la bonne voie ou l'inverse, je vous écoute.
Merci de votre aide, en esperant avoir été clair.
Partager