[C++ QT4] błąd kompilacji (linux)

0

Witajcie,

próbuje nauczyć się programowania z wykorzystaniem Qt4. Ostatnio wymyśliłem sobie, że napiszę programik który będzie zawierał w oknie dwa przyciski. Pierwszy z nich będzie wychodził z programu a drugi będzie wypisywał w konsoli "hello".
Niestety kompilacja kodu kończy się niepowodzeniem. Szukałem rozwiązania w google ale nic nie udało mi się znaleźć.
Co robię źle?
Poniżej zamieszczam kod i błąd z kompilacji (qmake -project ; qmake ; make).

plik: my2.cpp
#include<QApplication>
#include<QWidget>
#include<QPushButton>
#include<QVBoxLayout>
#include<iostream>

class Okno : public QWidget
{
Q_OBJECT
public:
Okno();
~Okno();
public slots:
void hello(){
  std::cout << "hello" << std::endl;
}
};

Okno::Okno()
{
QPushButton *button1 = new QPushButton(tr("Message"),this);
QPushButton *quit = new QPushButton(tr("Quit"),this);
connect(quit,SIGNAL(clicked()),qApp,SLOT(quit()));
connect(button1,SIGNAL(clicked()),this,SLOT(hello()));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(quit);
layout->addWidget(button1);
setLayout(layout);
}

Okno::~Okno(){
std::cout << "Czyszczenie" << std::endl;
}

int main(int argc,char *argv[])
{
QApplication app(argc,argv);
Okno w;
w.show();
return app.exec();
}

Błąd:
[user@darkstar my2]$ make
g++ -Wl,-rpath,/usr/lib -o my2 my2.o    -L/usr/lib -lQtGui -L/usr/lib -L/usr/X11R6/lib -pthread -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread                                                                    
my2.o: In function Okno::Okno()':                                                                                       my2.cpp:(.text+0x62): undefined reference to vtable for Okno'                                                          
my2.cpp:(.text+0x69): undefined reference to vtable for Okno'                                                           my2.cpp:(.text+0x81): undefined reference to Okno::staticMetaObject'                                                  
my2.cpp:(.text+0xd9): undefined reference to Okno::staticMetaObject'                                                   my2.o: In function Okno::Okno()':                                                                                      
my2.cpp:(.text+0x2a2): undefined reference to vtable for Okno'                                                         my2.cpp:(.text+0x2a9): undefined reference to vtable for Okno'                                                        
my2.cpp:(.text+0x2c1): undefined reference to Okno::staticMetaObject'                                                   my2.cpp:(.text+0x319): undefined reference to Okno::staticMetaObject'                                                  
my2.o: In function Okno::~Okno()':                                                                                     my2.cpp:(.text+0x4c1): undefined reference to vtable for Okno'                                                        
my2.cpp:(.text+0x4c8): undefined reference to vtable for Okno'                                                         my2.o: In function Okno::~Okno()':
my2.cpp:(.text+0x5e1): undefined reference to vtable for Okno' my2.cpp:(.text+0x5e8): undefined reference to vtable for Okno'
my2.o: In function Okno::~Okno()': my2.cpp:(.text+0x701): undefined reference to vtable for Okno'
my2.o:my2.cpp:(.text+0x708): more undefined references to `vtable for Okno' follow
collect2: ld returned 1 exit status
make: *** [my2] Błąd 1

0

Wyrzuć klasę Okno do oddzielnych plików h/cpp żeby moc mógł to łyknąć</i>

0

Działa, dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1