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
finddialog.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 #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
et main.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
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 l'erreur se situe à la ligne où il y a la flèche (fichier finddialog.cpp), l'erreur est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); }
je pense à une erreur toute bête, car le cas de bwCheckBox est le même que caseCheckBox qui , elle, marche très bien.`bwCheckBox' undeclared (first use this function) tableur finddialog.cpp
merci ,
lolveley.
Partager