Development/Tutorials/KDE2/KHello/Tutorial 4

From KDE TechBase
< Development‎ | Tutorials‎ | KDE2‎ | KHello
Revision as of 20:29, 29 June 2011 by Neverendingo (talk | contribs) (Text replace - "<code cppqt>" to "<syntaxhighlight lang="cpp-qt">")
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

  1. include <kapp.h>
  2. include <kmainwindow.h>
  3. include <kmessagebox.h>
  4. include <qpushbutton.h>

// end From KHello3

  1. include <kmenubar.h>
  2. 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

  1. include "khello.moc"
  2. 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. <syntaxhighlight lang="cpp-qt"> 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