Cod initial
Fisierul antet
Vom incepe cu kedit.h. Aici sint partile relevante
(editate cu caractere ingrosate) ce lucreaza cu meniurile si bara de unelte (toolbar).
#ifndef _KEDIT_H_
#define _KEDIT_H_
class QPopupMenu;
class TopLevel : public KTMainWindow
{
QPopupMenu *file, *edit, *options, *recentpopup;
protected:
void setupMenuBar();
void setupToolBar();
};
#endif
VECHI: kedit.h
Este foarte standard: un grup de pointeri catre meniuri
si cite o functie care sa initializeze bara de meniuri si bara de unelte. In
cadrul nostru de lucru nu avem nevoie de asa ceva. Va fi suficienta
o singura metoda pentru initializarea "actiunilor" noastre.
NOTA: dupa cum se va observa mai tirziu, veti putea accesa toate
"actiunile" dumneavoastra din orice metoda apartinind unei clase fara sa
salvati un pointer catre ele. Totusi, daca anticipati folosirea "actiunilor"
dumneavoastra mai tirziu, puteti salva un pointer aici.
#ifndef _KEDIT_H_
#define _KEDIT_H_
class TopLevel : public KTMainWindow
{
protected:
void setupActions();
};
#endif
NOU: kedit.h
Fisierul sursa
Aici este locul in care este facuta cea mai mare parte din munca.
Prefer sa deschid fisierul intr-o fereastra divizata.
In fereastra de sus creez functia mea setupActions()
in timp ce sterg codul apartinind functiilor setupMenubar()
si setupToolbar() in fereastra de jos.
Toate metodele aratate aici sint evidentiate prin caractere ingrosate ca sa
arate doar codul relevant (si poate citeva linii inainte si dupa acesta).
Mai intii vom incepe cu constructorul original:
#include <qpopupmenu.h>
#include <ktoolbar.h>
TopLevel::TopLevel (QWidget *, const char *name)
: KTMainWindow ( name)
{
setupMenuBar();
setupToolBar();
setupStatusBar();
readSettings();
recentpopup->clear();
for ( int i =0 ; i < (int)recent_files.count(); i++)
recentpopup->insertItem(recent_files[i], i, i);
options->setItemChecked( toolID, show_toolbar );
options->setItemChecked( statusID, show_statusbar );
}
VECHI: Constructorul
Elementul recentpopup este un obiect QPopupMenu ce contine
cele mai recente fisiere deschise. options este de asemenea
un obiect QPopupMenu.
Iata cum arata un constructor consolidat:
#include <kaction.h>
#include <kstdaction.h>
TopLevel::TopLevel (QWidget *, const char *name)
: KTMainWindow ( name)
{
setupStatusBar();
setupActions();
readSettings();
}
NOU: Constructorul
Apoi, trecem la destructor. In mod normal aici trebuie sa stergeti numai meniurile.
TopLevel::~TopLevel()
{
delete file;
delete edit;
delete options;
delete recentpopup;
}
VECHI: Destructorul
Cu noul nostru cadru de lucru toate obiectele de tip interfata cu
utilizatorul (UI) sint sterse pentru noi in culise.
TopLevel::~TopLevel()
{
}
NOU: Destructorul
Vom continua munca in sectiunea urmatoare.
|