Development/Tutorials/KDE2/KHello/Tutorial 4

From KDE TechBase
< Development‎ | Tutorials‎ | KDE2‎ | KHello
Revision as of 20:52, 29 June 2011 by Neverendingo (talk | contribs) (Text replace - "</code>" to "</syntaxhighlight>")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Description

Now we will make our users very happy by adding a menu!

Source code

/************* khello.h *******************/
// From KHello3
#include <kapp.h>
#include <kmainwindow.h>
#include <kmessagebox.h>
#include <qpushbutton.h>
// end From KHello3
#include <kmenubar.h>
#include <kpopupmenu.h>

// From KHello3
class KHello : public KMainWindow
{
  Q_OBJECT
public:
  KHello();
  void closeEvent(QCloseEvent *);
public slots:
  void slotHello();
  void slotExit();
private:
  QPushButton *btnHello;
  QPushButton *btnExit;
// end From KHello3
  KMenuBar *menu;
  KPopupMenu *file, *help;
};
/************* khello.cc ******************/
// From KHello3
#include "khello.moc"
#include <kmessagebox.h>

KHello::KHello() : KMainWindow()
{
  btnHello = new QPushButton("Hello", this);
  btnHello->setGeometry(45,30,50,25);
  btnHello->show();
  connect(btnHello, SIGNAL(clicked()), this, SLOT(slotHello()));

  btnExit = new QPushButton("Exit", this);
  btnExit->setGeometry(105,30,50,25);
  btnExit->show();
  connect(btnExit, SIGNAL(clicked()), this, SLOT(slotExit()));
// end From KHello3
  file = new KPopupMenu();
  file->insertItem("&Hello", this, SLOT(slotHello()));
  file->insertItem("&Exit", this, SLOT(slotExit()));
  
  help = helpMenu("KHello\nby Daniel Marjamäki\nUpdated by David Leimbach");
  
  menu = menuBar();
  menu->insertItem("&File", file);
  menu->insertItem("&Help", help);
}
// From KHello3
void KHello::closeEvent(QCloseEvent *e)
{
  kapp->beep();
  KMainWindow::closeEvent(e);
}

void KHello::slotHello()
{
  KMessageBox::information(this, "Hello World!", "Important");
}

void KHello::slotExit()
{
  close();
}
// end From KHello3

Important code

This code was simple and didn't need any explaining. However, I think one line was important, and will comment it.

help = helpMenu("KHello\nby Daniel Marjamäki\nUpdated by David Leimbach");

KMainWindow has a built in function which generates a help menu. Use it, in order to make your application consistent to other KDE programs.

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