Je voudrais dans mon programme afficher un QLabel qui servira de titre, et dessous un QFormLayout.
D'abord voici le code de la classe qui s'en sert :
classes/CFenetrePrincipal.h:
/*Copyright DE LOS RIOS Christophe, 2008
DE LOS RIOS christophe : christophedlr@gmail.com
Ce logiciel est un programme informatique servant à rapporter des bogues via un SGBD.
Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence [CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".
En contrepartie de l'accessibilité au code source et des droits de copie,
de modification et de redistribution accordés par cette licence, il n'est
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
seule une responsabilité restreinte pèse sur l'auteur du programme, le
titulaire des droits patrimoniaux et les concédants successifs.
A cet égard l'attention de l'utilisateur est attirée sur les risques
associés au chargement, à l'utilisation, à la modification et/ou au
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
manipuler et qui le réserve donc à des développeurs et des professionnels
avertis possédant des connaissances informatiques approfondies. Les
utilisateurs sont donc invités à charger et tester l'adéquation du
logiciel à leurs besoins dans des conditions permettant d'assurer la
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes.*/
#ifndef H_MAIN_CPP
#define H_MAIN_CPP
#include <QAction>
#include <QApplication>
#include <QMenuBar>
#include <QMenu>
#include <QMenuItem>
#include <QLabel>
#include <QLineEdit>
#include <QFormLayout>
#include <QVBoxLayout>
using namespace std;
class CFenetrePrincipal
{
private:
QWidget fenetre;
QMenuBar *menu;
QMenu *fichier, *aide;
QLabel *titre;
QFormLayout *formulaire;
QVBoxLayout *principal;
QLineEdit *titreBogue;
public:
CFenetrePrincipal(char *titre);
~CFenetrePrincipal();
void menuFichier();
void menuAide();
void rapport();
};
#endif
classes/CFenetrePrincipal.cpp :
/*Copyright DE LOS RIOS Christophe, 2008
DE LOS RIOS christophe : christophedlr@gmail.com
Ce logiciel est un programme informatique servant à rapporter des bogues via un SGBD.
Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence [CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".
En contrepartie de l'accessibilité au code source et des droits de copie,
de modification et de redistribution accordés par cette licence, il n'est
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
seule une responsabilité restreinte pèse sur l'auteur du programme, le
titulaire des droits patrimoniaux et les concédants successifs.
A cet égard l'attention de l'utilisateur est attirée sur les risques
associés au chargement, à l'utilisation, à la modification et/ou au
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
manipuler et qui le réserve donc à des développeurs et des professionnels
avertis possédant des connaissances informatiques approfondies. Les
utilisateurs sont donc invités à charger et tester l'adéquation du
logiciel à leurs besoins dans des conditions permettant d'assurer la
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes.*/
#include "CFenetrePrincipal.h"
CFenetrePrincipal::CFenetrePrincipal(char *titreFenetre)
{
fenetre.setFixedSize(800, 600);
fenetre.setWindowTitle(titreFenetre);
menu = new QMenuBar(&fenetre);
titre = new QLabel(&fenetre);
formulaire = new QFormLayout;
titreBogue = new QLineEdit;
principal = new QVBoxLayout;
}
void CFenetrePrincipal::menuFichier()
{
fichier = menu->addMenu("Fichier");
fichier->addAction("Nouveau"); //Nouveau rapport de bogue
fichier->addAction("Ouvrir"); //Ouvre un rapport de bogue
fichier->addAction("Enregistrer"); //Enregistrer le bogue
fichier->addSeparator(); //Ajoute un séparateur
fichier->addAction("Importer"); //Importer un fichier SQL de bogue
fichier->addAction("Exporter"); //Exporter les bogues
fichier->addSeparator();
QAction *quitter = fichier->addAction("Quitter"); //Quitter le programme
quitter->setShortcut(QKeySequence("Ctrl+W")); //Ajoute un raccourcis clavier
QObject::connect(quitter, SIGNAL(triggered()), qApp, SLOT(quit())); //Ajoute un signale
}
void CFenetrePrincipal::menuAide()
{
aide = menu->addMenu("Aide");
aide->addAction("Rubrique d'aide"); //Aide du logiciel
aide->addAction("Mise à jour"); //MAJ
aide->addSeparator();
aide->addAction("A propos"); //Fenêtre A propos de
}
void CFenetrePrincipal::rapport()
{
titre->setText("<h1>Rapporter un bogue</h1>");
titre->move(250, 20);
formulaire->addRow("Titre :", titreBogue);
principal->addLayout(titre);
principal->addLayout(formulaire);
fenetre.setLayout(principal);
fenetre.show();
}
CFenetrePrincipal::~CFenetrePrincipal()
{
delete menu;
delete titre;
delete formulaire;
delete titreBogue;
delete principal;
}
Et voici l'erreur :
classes/CFenetrePrincipal.cpp: In member function «void CFenetrePrincipal::rapport()»:
classes/CFenetrePrincipal.cpp:87: erreur: no matching function for call to «QVBoxLayout::addLayout(QLabel*&)»
/usr/include/qt4/QtGui/qboxlayout.h:88: note: candidats sont: void QBoxLayout::addLayout(QLayout*, int)
make: *** [CFenetrePrincipal.o] Erreur 1
J'ai regardé dans le cours de M@teo21, il utilise comme moi.
Pour ce qui est de la doc, d'après elle la méthode addLayout éxiste pas.
Merci d'avance à ceux qui pourront m'aider.
Mon site internet : http://www.chrissoftware.fr.nf
addLayout attends un QLayout, tu lui envoies un QLabel (ligne 87) (l'erreur te dit qu'il n'y a pas de méthode addLayout(QLabel *), pas qu'il n'y a pas de méthode addLayout(QLayout *).
C'est de la méthode addWidget() dont tu as besoin.
Je suis d'accord avec toi, mais dans le tuto de @teo21 : http://www.siteduzero.com/tuto-3-31041 [...] tml#ss_part_6
Il fait la même chose mais avec un QPushButton à la place du QLabel, d'où le fait que je comprend pas que ça fonctionne avec lui et pas avec moi.
Sinon, tu crois que en formant un Layout autour de mon QLabel ça fonctionnerais ?
Mon site internet : http://www.chrissoftware.fr.nf
Ah c'est pas stupide ça lol, j'y avais pas pensé(pas de cerveau ce soir finalement ).
Je vais voir demain avec un addWidget, et je te dirais.
EDIT: Ca fonctionne, merci à toi.
Mon site internet : http://www.chrissoftware.fr.nf
[QT4] FormLayout et QLabel
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.