Adaugarea a doua butoane
Descriere
Acum este momentul sa adaugam citeva butoane.
Codul sursa
Noul cod este colorat cu albastru.
Nu am mai inclus main.cc,
deoarece este la fel ca in sectiunea
Crearea unei clase fereastra.
#include <kapp.h>
#include <kmainwindow.h>
#include <qpushbutton.h>
class KHello : public KMainWindow
{
Q_OBJECT
public:
KHello();
void closeEvent(QCloseEvent *);
public slots:
void slotHello();
void slotExit();
private:
QPushButton *btnHello;
QPushButton *btnExit;
};
khello.h
#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()));
}
void KHello::closeEvent(QCloseEvent *e)
{
kapp->beep();
KMainWindow::closeEvent(e);
}
void KHello::slotHello()
{
KMessageBox::messageBox(0,
KMessageBox::Information,"Hello World!");
}
void KHello::slotExit()
{
close();
}
khello.cc
Explicarea codului
Voi explica doar ceea ce cred ca este necesar in acest moment.
public slots:
Aceasta sectiune este noua si este folosita de catre compilatorul de
meta obiecte. In lumea QT, sloturile sint functii de tratare
a evenimentelor si semnalele (signals) sint evenimente.
Puneti toate functiile de tratare a evenimentelor in aceasta sectiune.
connect(btnHello, SIGNAL(clicked()),
this, SLOT(slotHello()));
Conectati evenimentul clicked din obiectul btnHello
la functia de tratare a evenimentelor slotHello.
Compilare
Pentru Linux, $KDEDIR si $QTDIR contin caile unde sint
instalate KDE si QT.
Utilizatorii FreeBSD 5.x pot omite optiunea -ldl.
Daca utilitarul moc nu se afla in calea sistemului dumneavoastra,
incercati cu $QTDIR/bin/moc.
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
|