Development/Tutorials/KDE2/KHello/Tutorial 4
Description
Now we will make our users very happy by adding a menu!
Source code
<syntaxhighlight lang="cpp-qt" line> /************* 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;
}; <syntaxhighlight lang="cpp-qt" line> /************* 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. <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