Mam problem odnośnie używania qt w codeblocksie. Ponieważ przy dodawania slotów (po wpisania makra Q_OBJECT) pojawiają się nie zidentyfikowanie jakieś referencje do vtable.
Pytanie: jak to skonfigurować
Dałem sobie na początku odpalić qmake i używanie z makefile'a. Odpaliłem i wyskoczyło, że brak reguł dla obiektu 'Debug'.
Odpaliłem z konsoli make i pojawiło się:
[quote]
tomasz@tomasz-K50IN:~/Dokumenty/prace/c/test/qt_pro$ make
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -o main.o main.cpp
main.cpp:24: warning: unused parameter ‘value’
g++ -Wl,-O1 -o ../../../../c/test/qt_pro/translation main.o -L/usr/lib -lQtGui -lQtCore -lpthread
main.o: In function main': main.cpp:(.text+0x49): undefined reference to
vtable for myWidget'
main.cpp:(.text+0x51): undefined reference to vtable for myWidget' main.cpp:(.text+0xd5): undefined reference to
vtable for myWidget'
main.cpp:(.text+0xdd): undefined reference to vtable for myWidget' main.o: In function
myWidget::myWidget()':
main.cpp:(.text._ZN8myWidgetC1Ev[myWidget::myWidget()]+0x2c): undefined reference to vtable for myWidget' main.o:main.cpp:(.text._ZN8myWidgetC1Ev[myWidget::myWidget()]+0x33): more undefined references to
vtable for myWidget' follow
collect2: ld returned 1 exit status
make: *** [../../../../c/test/qt_pro/translation] Błąd 1
[/quote]
Kod mojej aplikacji to:
[code]
#include <QtGui>
#include <QApplication>
#include <QFont>
#include <QPushButton>
class myWidget : protected QWidget
{
Q_OBJECT
protected:
QHBoxLayout *layout;
QLabel *label;
QLineEdit *edit;
QPushButton *button;
public slots:
void message()
{
}
signals:
void valueChanged(int value)
{
}
public:
myWidget ()
{
QString string("Moja pierwsza aplikacja");
layout = new QHBoxLayout();
label = new QLabel("app");
edit = new QLineEdit();
button = new QPushButton("Zamknij");
layout->addWidget (label);
layout->addWidget (edit);
layout->addWidget (button);
this->setLayout (layout);
this->setVisible(true);
this->setWindowTitle (string);
}
~myWidget ()
{
delete label;
delete edit;
delete button;
delete layout;
}
};
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
myWidget widget;
return app.exec();
}
[/code]
[code]
HEADERS =
SOURCES = main.cpp
CONFIG += qt
DESTDIR = /home/tomasz/Dokumenty/c/test/qt_pro
[/code]