Problème "vtable" lors de la création d'une appli Qt
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:
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:
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:
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 !