Development/Tutorials/First program (it)

From KDE TechBase
Hello World
Collezione di Tutorial   Tutorial per Principianti
Prerequisiti   C++, Qt, KDE4 development environment
A  Seguire   Tutorial 2 - KXmlGuiWindow
Ulteriori Letture   CMake

Prefazione

Il tuo primo programma dovrebbe salutare il mondo con un amichevole "Ciao Mondo", giusto? Per farlo, useremo un KMessageBox personalizzando uno dei pulsanti.

Tip
Per avere più informazioni su qualunque classe che incontri, Konqueror offre una veloce scorciatoia. Per cercare informazioni circa KMessageBox, basta digitare "kde:kmessagebox" in Konqueror e sarai portato alla documentazione.


Tip
Vorresti poter usare KDevelop per i tuoi progetti, il quale fa molte cose carine come il completamento del codice, facile accesso alla documentazione delle API, supporto per il debugging.

Leggi questo tutorial per configurare KDevelop correttamente. Puoi controllare se il setup è andato a buon fine aprendo un'applicazione KDE4 esistente con KDevelop.

Tuttavia hai ancora bisogno di editare a mano i files di CMake.


Il Codice

Tutto il codice di cui abbiamo bisogno starà in un file, main.cpp. Crealo con il codice qua sotto:

#include <KApplication>
#include <KAboutData>
#include <KCmdLineArgs>
#include <KMessageBox>
#include <QByteArray>

int main (int argc, char *argv[])
{
    KAboutData aboutData(
                         // Il nome del programma, usato internamente.
                         "tutorial1",
                         // Il nome nel catalogo messaggi.
                         // Se nullo, verrà usato il nome del programma.
                         0,
                         // Una stringa con il nome del programma.
                         // Quella che verrà effettivamente visualizzata.
                         ki18n("Tutorial 1"),
                         // La stringa con la versione del programma.
                         "1.0",
                         // Piccola descrizione su cosa fa il programma.
                         ki18n("Visualizza una finestra KMessageBox."),
                         // La licenza con la quale il codice è rilasciato.
                         KAboutData::License_GPL,
                         // Copyright
                         ki18n("(c) 2007"),
                         // Testo opzionale mostrato in "Informazioni su".
                         // Può contenere qualunque informazione desiderata.
                         ki18n("Un po' di testo..."),
                         // La stringa con la homepage del programma.
                         QByteArray("http://tutorial.com/"),
                         // L'indirizzo email per la segnalazione di bug.
                         QByteArray("[email protected]"));

    KCmdLineArgs::init( argc, argv, &aboutData );
    KApplication app;
    KGuiItem yesButton( i18n( "Ciao" ), QString(),
                        i18n( "Questo è un tooltip" ),
                        i18n( "Questo è un testo di aiuto CheCos'è?." ) );
    KMessageBox::questionYesNo( 0, i18n( "Ciao Mondo" ),
                                i18n( "Ciao" ), yesButton );
    return 0;
}

Il primo codice specifico di KDE che incontriamo in questo programma è KAboutData. Questa è la classe utilizzata per immagazzinare le informazioni sul programma, come ad esempio una piccola descrizione, gli autori, o le informazioni sulla licenza. Praticamente ogni applicazione KDE dovrebbe usare questa classe.

Poi arriviamo a KCmdLineArgs. Questa è la classe che si usa quando si vogliono specificare istruzioni da riga di comando per, ad esempio, aprire il programma con uno specifico file. Comunque, in questo tutorial, semplicemente lo inizializziamo con l'oggetto KAboutData che abbiamo appena creato, in modo da poter usare le opzioni --version o --author

Quindi adiamo a creare l'oggetto KApplication. Ciò bisogna farlo esattamente una volta in ogni programma, visto che è necessario per cose come l'i18n.

Ora che abbiamo finito con le operazioni indispensabili di KDE, possiamo cominciare a fare cose interessanti con la nostra applicazione. Creeremo una finestra pop-up, ma personalizzeremo uno dei pulsanti. Per la personalizzazione avremo bisogno di un oggetto KGuiItem. Il primo argomento del costruttore di KGuiItem è il testo che apparirà sull'oggetto (nel nostro caso, un pulsante). Quindi ci sarà un opzione per inserire un'icona, ma non ne vogliamo una così gli mettiamo QString. Impostiamo quindi il tooltip (quello che appare quando fermi il puntatore su un elemento) ed infine il testo "Che Cos'è?" (accessibile tramite click col tasto destro, con Shift-F1 oppure cliccando su "?" nella barra del titolo e poi sul pulsante "Ciao").

Ora che abbiamo il nostro pulsante, possiamo creare il nostro pop-up. Chiamiamo la funzione KMessageBox::questionYesNo() la quale, in modo predefinito, crea una finestra con due pulsanti "Si" e "No". Il secondo argomento compone il testo mostrato nella finestra sopra i due pulsanti. Il terzo è l'intestazione della finestra; e infine impostiamo il KGuiItem di (quello che normalmente è) il pulsante "Si" con il nostro KGuiItem yesButton appena creato.

Notare come tutto il testo visibile all'utente passa attraverso la funzione i18n(); questo è necessario per permettere la traduzione della UI. Più informazioni sulla localizzazione possono essere trovate nel tutorial sulla localizzazione.

Abbiamo finito per quanto riguarda il codice. Ora la compilazione e la prova.

Compilazione

Vorrai usare CMake come ambiente di compilazione. Devi fornire un file chiamato CMakeLists.txt, cmake usa questo file per generare tutti i Makefiles.

CMakeLists.txt

Crea un file di nome CMakeLists.txt nella stessa cartella di main.cpp con questo contenuto:

project (tutorial1)

find_package(KDE4 REQUIRED)
include_directories(${KDE4_INCLUDES})

set(tutorial1_SRCS
  main.cpp
)

kde4_add_executable(tutorial1 ${tutorial1_SRCS})
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})
install(TARGETS tutorial1  ${INSTALL_TARGETS_DEFAULT_ARGS})

La funzione find_package() trova tutti i pacchetti che hai richiesto (in questo caso KDE4) ed imposta alcune variabili che descrivono la posizione degli header e delle librerie del pacchetto. In questo caso useremo la variabile KDE4_INCLUDES contenente il percorso ai files header di KDE4.

Per permettere al compilatore di trovare questi files, passiamo quella variabile alla funzione include_directories() la quale aggiunge gli header di KDE4 al percorso di ricerca degli header.

Poi creiamo una variabile chiamata tutorial1_SRCS con la funzione set(). In questo caso la impostiamo con il nome del nostro unico file sorgente.

Quindi usiamo kde4_add_executable() per creare un eseguibile chiamato tutorial1 dai sorgenti elencati nella nostra variabile tutorial1_SRCS. In seguito, facciamo il link del nostro eseguibile alle librerie kdeui di KDE4 con target_link_libraries() e la variabile KDE4_KDEUI_LIBS precedentemente riempita dalla funzione find_package(). La riga che comincia con install scrive un target di default "install" dentro al Makefile.

Make ed Esecuzione

Puoi invocare CMake e make manualmente:

mkdir build && cd build
cmake .. # Nota questi due punti - non è una mancanza,
         # stanno per "cartella superiore".
make

Oppure, se hai preparato il tuo ambiente come descritto in Getting Started/Build/KDE4, puoi compilare questo codice con:

cmakekde


Quindi lancialo con:

./tutorial1

Continua

Ora puoi continuare verso usare KXmlGuiWindow.