Cet article a déjà 7 ans mais je tiens tout de même à éclairer les lanternes de ceux qui qui ça ne fonctionne pas
Vous devez tous avoir le bug comme quoi "m_Quit, m_Minimize, et m_Maximize ne sont pas déclarés" . Pour les plus logiques de vous, vous avez surement pensé qu'il suffisait de les déclarer en temps que WindowButton avec le ButtonState leur correspondant : dans le .h :
WindowButton *m_Minimize;
et
m_Minimize= new WindowButton(WindowButton::BUTTON_MINIMIZE, this);
dans WindowTitleBar.cpp.
Moi, en les déclarants en temps que pointeur de cette manière, j'ai enlevé l'esperluette des connects :
1 2
| connect(m_Minimize, SIGNAL(clicked ()),
this , SLOT (Minimized())); |
Bon, ça, c'est facile, mais malheureusement ça ne suffit pas. Si on compile, on ne voit que le bouton Quit, et il est tout moche. Pour résoudre ce bug, J'ai créé un QHBoxLayout. Pensez a l'include dans le .h Code du .h:
QHBoxLayout *m_layoutTitleBar;
et du cpp :
m_layoutTitleBar = new QHBoxLayout(this);
Pour les débutants (que faites vous là pauvres fous ) On assigne un layout horizontale au WindowTitleBar.
Ensuite on défini la taille des boutons avec la méthode setFixedSize. Dans le WindowTitleBar.cpp:
1 2 3 4
| int size=20;
m_Minimize->setFixedSize(size,size);
m_Maximize->setFixedSize(size,size);
m_Close->setFixedSize(size,size); |
Enfin, on ajoute les différents widgets dedans :
1 2 3 4
| m_layoutTitleBar->addWidget(&m_Title);
m_layoutTitleBar->addWidget(m_Minimize);
m_layoutTitleBar->addWidget(m_Maximize);
m_layoutTitleBar->addWidget(m_Close); |
Et voilà, tout bête, mais quand c'est pas expliqué, on s'arrache les cheveux ! Bonne prog
Partager