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

Tutorial interfata grafica XML KDE


   Kurt Granroth
   5 Septembrie 2000

Detaliu... detalii...

In unele aplicatii s-ar rezuma pentru cod. Totusi, in majoritatea aplicatiilor exista urme ale meniurilor si barelor de unelte imprastiate prin diferite functii. Vom cauta acum aceste urme si le vom elimina rapid.

Acesta era un fragment de cod care adauga un nume de fisier la meniul "Open Recent".


void TopLevel::add_recent_file(const QString &newfile)
{
  recentpopup->clear();

  for ( int i =0 ; i < (int)recent_files.count(); i++)
    recentpopup->insertItem(recent_files[i], i, i);
}
VECHI: add_recent_file()

Inlocuim vechiul cod cu:


void TopLevel::add_recent_file(const KURL &url)
{
  KRecentFilesAction *recent;
  recent = (KListAction*)actionCollection()->action(
            KStdAction::stdName(KStdAction::OpenRecent));
  recent->addURL(url);
}
NOU: add_recent_file()

Bine, stiu ca ati tresarit cind ati vazut cea de a doua linie de cod. Am procedat astfel doar ca sa ilustrez modul in care puteti accesa o "actiune" fara sa fie nevoie sa salvati nici un pointer. Foarte repede voi face un sumar a ceea ce se intimpla. QActionCollection::action() intoarce un pointer catre o actiune salvata. action() preia numele intern al actiunii ca parametru. Acest nume este furnizat de KStdAction::stdName() care returneaza numele interne ale tuturor actiunilor standard.

Daca ati fi salvat un pointer in constructor, nu ar mai fi fost nevoie sa procedati astfel.

In continuare vom analiza functiile de validare. Functiile toggleToolBar() si toggleStatusBar() sint aproape identice ca functionalitate, asadar vom analiza doar una din ele:


void TopLevel::toggleToolBar()
{
  show_toolbar = show_toolbar == true ? false : true;
  options->setItemChecked( toolID, show_toolbar );
  
  if(show_toolbar)
    enableToolBar( KToolBar::Show );
  else
    enableToolBar( KToolBar::Hide );
}
VECHI: toggleToolBar()

Este exagerat. Putem realiza acelasi lucru in felul urmator:


void TopLevel::toggleToolBar()
{
  if(toolBar()->isVisible())
    toolBar()->hide();
  else
    toolBar()->show();
}
NOU: toggleToolBar()

Observati ca nu mai trebuie sa ne ingrijim de selectarea itemilor de meniu opțiune. Cadrul de lucru al "actiunilor" va face asta in locul nostru.

In final, metodele readSettings() si writeSettings() trebuie actualizate. Nu este ceva nou asa ca voi lasa acest lucru ca exercitiu pentru dumneavoastra.



Traducere de Daniel Ionescu. Adaptare de Claudiu Costin.