PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : qt Fehler oder Tipfehler ?



JoelH
16-09-2002, 11:28
Ich hab hier ein Buch zu KDE 2 (M&T KDE2 programmierung)'leider' benutz ich KDE3 mit QT3.0.3 naja und ich hab da ein läppische Beispiel bekomem es aber nicht zum laufen :(
Fehlermeldung =>

[root@joels listings]# g++ -o myprog main.o mywindow.o -L$QTDIR/lib -L$KDEDIR -lkdeui -lkdecore -lqt
mywindow.o: In function `MyWindow::qt_invoke(int, QUObject *)':
mywindow.o(.text+0x1a7): undefined reference to `MyWindow::slotButton(void)'
collect2: ld returned 1 exit status

Die Programme sollten aebr richtig sein, hab keinen Fehelr darin gefunden =>
mywindow.h

#include <qwidget.h>
#include <qpushbutton.h>

class MyWindow : public QWidget
{
Q_OBJECT
public:
MyWindow();
public slots:
void slotButton();
private:
QPushButton *button;
};
mywindow.cpp

#include "mywindow.moc"
#include <iostream.h>

MyWindow::MyWindow() : QWidget()
{
button = new QPushButton("Drück mich", this);
button->setGeometry(10,10,100,40);
button->show();

connect(button, SIGNAL(clicked()), this, SLOT(slotButton()));
}

void slotButton()
{
cout << "Du hast mich gedrückt" << endl;
}
main.cpp

#include <kapp.h>
#include "mywindow.h"

int main(int argc, char **argv)
{
KApplication app(argc, argv, "moc-test");
MyWindow window;
window.setGeometry(100,100,200,100);
window.setCaption("Aha!");
app.setMainWidget(&window);
window.show();
return app.exec();
}
die moc Datei erzeügen geht =>
mywindow.moc der asschnitt mit dem Fehler =>

bool MyWindow::qt_invoke( int _id, QUObject* _o )
{
switch ( _id - staticMetaObject()->slotOffset() ) {
case 0: slotButton(); break;
default:
return QWidget::qt_invoke( _id, _o );
}
return TRUE;
}
was ist da das Problem ?
kopiliert hab ich das so =>

g++ -I$QTDIR/include -I$KDEDIR -c main.cpp
moc mywindow.h -o mywindow.moc
g++ -I$QTDIR/include -I$KDEDIR -c mywindow.cpp
das funzt alles aber dann beim linken der Objektdateinen gehts eben nimmer :(

anda_skoa
16-09-2002, 11:34
In mywindow.cpp fehlt vor slotButton das MyWindow::



void MyWindow::slotButton()


BTW, nimm nicht kapp.h sondern kapplication.h beim include

Ciao,
_

JoelH
16-09-2002, 11:40
wow, danke das hat man davon wenn man blind Code aus Büchern vertraut, das ist wohl ein Fehelr im Buch und ich dachte mal wieder es liegt an den Bibs.