Programme Qt simple - erreur cachée ?
Bonjour,
j'ai eclipse CDT+Qt, et l'environement marche.
En tapant un exemple d'un livre dédié à Qt, j'ai une erreur dans une classe qui est pour moi incompréhensible.
cette classe est un QtGUI Project, elle représente une fenêtre destinée à permettre une recherche dans un tableur; on entre la chaîne de caractères à chercher, il y a deux options de recherche (faire attention à la casse et rechercher vers le haut), deux boutons (chercher, fermer).
voici les fichiers du projet:
finddialog.h
Code:
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
|
#ifndef FINDDIALOG_H
#define FINDDIALOG_H
#include <QDialog>
class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;
class FindDialog : public QDialog
{
Q_OBJECT
public:
FindDialog(QWidget *parent = 0);
signals:
void findNext(const QString& str,Qt::CaseSensitivity cs);
void findPrevious(const QString & str,Qt::CaseSensitivity cs );
private slots:
void findClicked();
void enableFindButton(const QString & text);
private:
QLabel* label;
QLineEdit* lineEdit;
QCheckBox* caseCheckBox;
QPushButton* findButton;
QPushButton* closeButton;
};
#endif // FINDDIALOG_H |
finddialog.cpp
Code:
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
|
#include <QtGui>
#include "finddialog.h"
FindDialog::FindDialog(QWidget *parent)
: QDialog(parent)
{
label=new QLabel("Find &what:");
lineEdit=new QLineEdit;
label->setBuddy(lineEdit);
QCheckBox* caseCheckBox=new QCheckBox("Match &Case");
QCheckBox* bwCheckBox=new QCheckBox("Search &backward");
findButton=new QPushButton("&Find");
findButton->setDefault(true);
findButton->setEnabled(false);
closeButton=new QPushButton("Close");
connect(lineEdit,SIGNAL(textChanged(const QString &)),
this,SLOT(enableFindButton(const QString &)));
connect (findButton,SIGNAL(clicked()),
this, SLOT(findClicked()));
connect(closeButton,SIGNAL(clicked()),
this,SLOT(close()));
QHBoxLayout* topLeftLayout=new QHBoxLayout;
topLeftLayout->addWidget(label);
topLeftLayout->addWidget(lineEdit);
QVBoxLayout* leftLayout = new QVBoxLayout;
leftLayout->addLayout(topLeftLayout);
leftLayout->addWidget(caseCheckBox);
leftLayout->addWidget(bwCheckBox);
QVBoxLayout* rightLayout = new QVBoxLayout;
rightLayout->addWidget(findButton);
rightLayout->addWidget(closeButton);
rightLayout->addStretch();
QHBoxLayout* mainLayout=new QHBoxLayout;
mainLayout->addLayout(leftLayout);
mainLayout->addLayout(leftLayout);
mainLayout->addLayout(rightLayout);
setLayout(mainLayout);
}
void FindDialog::findClicked(){
QString text=lineEdit->text();
Qt::CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive;
---> if ( bwCheckBox -> isChecked() )
emit findPrevious(text,cs);
else
emit findNext(text,cs);
}
void FindDialog::enableFindButton(const QString& text){
findButton->setEnabled(!text.isEmpty());
} |
et main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#include <QtGui>
#include <QApplication>
#include "finddialog.h"
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
FindDialog* dialog=new FindDialog;
dialog->show();
return app.exec();
} |
et l'erreur se situe à la ligne où il y a la flèche (fichier finddialog.cpp), l'erreur est:
Citation:
`bwCheckBox' undeclared (first use this function) tableur finddialog.cpp
je pense à une erreur toute bête, car le cas de bwCheckBox est le même que caseCheckBox qui , elle, marche très bien.
merci ,
lolveley.