Development/Tutorials/KDE2/KHello/Tutorial 2
Description
In this step I describe how a window class is created.
Source code
Now there are three files
/************* khello.h *******************/
#include <kapp.h>
#include <kmainwindow.h>
class KHello : public KMainWindow
{
Q_OBJECT
public:
void closeEvent(QCloseEvent *);
};
/************* khello.cc ******************/
#include "khello.moc"
void KHello::closeEvent(QCloseEvent *e)
{
kapp->beep();
KMainWindow::closeEvent(e);
}
/************* main.cc ********************/
#include "khello.h"
int main( int argc, char **argv )
{
KApplication a( argc, argv, "khello" );
KHello *w = new KHello();
w->setGeometry(100,100,200,100);
a.setMainWidget( w );
w->show();
return a.exec();
}
Explaining the code
There are a few commands that need explaining:
Q_OBJECT
This is a command to the meta object compiler, which is included in the developer files for QT. You must start each KDE class with this line.
void closeEvent(QCloseEvent *);
This function is called when your window is being closed. We sound a beep when that happens and then call the original closeEvent() function. The original closeEvent() function takes care to exit the application when the last window gets closed.
#include "khello.moc"
The meta object compiler produces a moc file, which you must include. The moc file is an extended version of your header file.
Compiling
[on linux where KDEDIR and QTDIR contain the paths to where KDE and Qt are installed respectively] [FreeBSD 5.x users may omit the -ldl]
g++ -c -I$KDEDIR/include -I$QTDIR/include -fno-rtti main.cc moc khello.h -o khello.moc g++ -c -I$KDEDIR/include -I$QTDIR/include -fno-rtti khello.cc g++ -L$KDEDIR/lib -L$QTDIR/lib -lkdeui -lkdecore -lqt -ldl -o khello main.o khello.o
[if moc is not in your path try $QTDIR/bin/moc]