Development/Tutorials/KDE2/KHello/Tutorial 2: Difference between revisions

From KDE TechBase
< Development‎ | Tutorials‎ | KDE2‎ | KHello
(Migrate)
 
m (Text replace - "<code cppqt>" to "<syntaxhighlight lang="cpp-qt">")
Line 43: Line 43:
==Explaining the code==
==Explaining the code==
There are a few commands that need explaining:
There are a few commands that need explaining:
<code cppqt>
<syntaxhighlight lang="cpp-qt">
Q_OBJECT
Q_OBJECT
</code>
</code>
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.
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.


<code cppqt>
<syntaxhighlight lang="cpp-qt">
void closeEvent(QCloseEvent *);
void closeEvent(QCloseEvent *);
</code>
</code>
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.
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.


<code cppqt>
<syntaxhighlight lang="cpp-qt">
#include "khello.moc"
#include "khello.moc"
</code>
</code>

Revision as of 20:29, 29 June 2011

Description

In this step I describe how a window class is created.

Source code

Now there are three files /************* khello.h *******************/

  1. include <kapp.h>
  2. include <kmainwindow.h>

class KHello : public KMainWindow {

 Q_OBJECT

public:

 void closeEvent(QCloseEvent *);

}; /************* khello.cc ******************/

  1. include "khello.moc"

void KHello::closeEvent(QCloseEvent *e) {

 kapp->beep();
 KMainWindow::closeEvent(e);

} /************* main.cc ********************/

  1. 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: <syntaxhighlight lang="cpp-qt"> 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.

<syntaxhighlight lang="cpp-qt"> 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.

<syntaxhighlight lang="cpp-qt">

  1. 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]