Bonjour à tous,

Je suis en train de faire mes premiers pas en Qt.

Pour m'entrainer un peut je suis en train de faire des petites applications afin de voir la philosophie de la lib Qt.

Je voudrais faire un convertisseur Euro-Dolar comme exemple afin de voir comment ça marche les slots, les connexions etc...

J'ai trouve l'erreur " home/qt_slots/src/converter.cpp:54: undefined reference to `vtable for Converter' ". Je pense qu'il est lié à l'heritage virtuel de Converter (?).

Mon code est le suivant:

MAIN :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
#include <QApplication>
#include "converter.h"
 
int main(int argc, char *argv[])
{
 
	QApplication app(argc, argv);
	Converter aConverter;
 
      	return app.exec();
}
converter.h
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
 
#include <QDialog>
 
class Converter : public QDialog
{
Q_OBJECT
 
public :
Converter();
~Converter();
 
public slots : 
	void euroChanged(int aNum); 
 
private : 
	int _euroValue;
};
converter.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
 
#include <QCoreApplication>
 
#include "converter.h"
 
#include <QPushButton>
#include<QGridLayout>
#include<QLabel>
#include <QLineEdit>
 
 
 
Converter::Converter()
{
	QWidget aWindow;
 
	//declaring a main layout in a window
	QGridLayout * aMainLayout = new QGridLayout(&aWindow);	
 
	//declaring the labels
	QLabel * aLabel1 = new QLabel("Euros");
	QLabel * aLabel2 = new QLabel("Dolars");
 
	//declaring a text line
	QLineEdit * aLine1 = new QLineEdit;
	QLineEdit * aLine2 = new QLineEdit;
 
	//declaring the button
	QPushButton * aButtonConvert = new QPushButton("Convert");
	QPushButton * aButtonQuit = new QPushButton("Quit");
 
	//adding the labels in the main layout
	aMainLayout->addWidget(aLabel1,0,0);
	aMainLayout->addWidget(aLine1,0,1);
 
	aMainLayout->addWidget(aLabel2,1,0);
	aMainLayout->addWidget(aLine2,1,1);	
 
	//adding the button onto the main layout
	aMainLayout->addWidget(aButtonQuit,2,0);
	aMainLayout->addWidget(aButtonConvert,2,1);
	aWindow.show();
 
	//catching the signal and executing the callback
	QObject::connect(aButtonQuit, SIGNAL(clicked()), this, SLOT(quit()));
 
	QObject::connect(aButtonConvert,SIGNAL(clicked()), this, SLOT(euroChanged(4)));
 
//Comment prendre la valeur du LineEdit Euro à la place de 4 ??
};
 
Converter::~Converter()
{};
 
void Converter::euroChanged(int iNum)
{
//int aNum = iString.toInt();
qDebug("Hello from euroChanged");
//setEuroValue(aNum);
 
//Comment renvoyer la valeur sur la Line Edit des Dolars ??
};
Aussi j'ai 3 questions de plus...

Comment prendre la valeur du LineEdit Euro à la place de 4 pour la recupérer dans la méthode euroChanged ?

Comment renvoyer le résultat à la LineEdit Dolar une fois qu'on a fait la conversion ?

Pouvez vous me donner des conseilles pour avoir une structure de l'application (conseilles de bonne programmation en général)?

Merci de votre aide, vous etes super !