Pagina principala
Informatii
Internationalizarea
pROgrame KDE/Qt
Download
Documentatii
Despre LKR
Contact
Resurse
Harta site-ului

KHello, cel mai simplu program KDE


   David Leimbach
   1 Februarie 2000

Adaugarea a doua butoane

Fereastra KHello

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


Traducere de Daniel Ionescu. Adaptare de Claudiu Costin.