Development/Tutorials/First program (it): Difference between revisions
Prefazione + Immagine |
Traduzione completa |
||
Line 18: | Line 18: | ||
[[image:Ciaomondo_tutorial1.png|frame|center]] | [[image:Ciaomondo_tutorial1.png|frame|center]] | ||
{{tip| | {{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 [[Getting_Started/Set_up_KDE_4_for_development#KDevelop|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, <tt>main.cpp</tt>. Crealo con il codice qua sotto: | |||
<code cppqt> | <code cppqt> | ||
#include <KApplication> | #include <KApplication> | ||
Line 41: | Line 38: | ||
{ | { | ||
KAboutData aboutData( | KAboutData aboutData( | ||
// | // Il nome del programma, usato internamente. | ||
"tutorial1", | "tutorial1", | ||
// | // Il nome nel catalogo messaggi. | ||
// | // Se nullo, verrà usato il nome del programma. | ||
0, | 0, | ||
// | // Una stringa con il nome del programma visualizzabile. | ||
ki18n("Tutorial 1"), | ki18n("Tutorial 1"), | ||
// | // La stringa con la versione del programma. | ||
"1.0", | "1.0", | ||
// | // Piccola descrizione su cosa fa il programma. | ||
ki18n(" | ki18n("Visualizza una finestra KMessageBox."), | ||
// | // La licenza sotto la quale questo codice è rilasciato. | ||
KAboutData::License_GPL, | KAboutData::License_GPL, | ||
// Copyright | // Copyright | ||
ki18n("(c) 2007"), | ki18n("(c) 2007"), | ||
// | // Testo opzionale mostrato nella finestra "Informazioni su". | ||
// | // Può contenere qualunque informazione desiderata. | ||
ki18n(" | ki18n("Un po' di testo..."), | ||
// | // La stringa con la homepage del programma. | ||
"http://tutorial.com/", | "http://tutorial.com/", | ||
// | // L'indirizzo email per la segnalazione di bug. | ||
"submit@bugs.kde.org"); | "submit@bugs.kde.org"); | ||
KCmdLineArgs::init( argc, argv, &aboutData ); | KCmdLineArgs::init( argc, argv, &aboutData ); | ||
KApplication app; | KApplication app; | ||
KGuiItem yesButton( i18n( " | KGuiItem yesButton( i18n( "Ciao" ), QString(), | ||
i18n( " | i18n( "Questo è un tooltip" ), | ||
i18n( " | i18n( "Questo è un testo di aiuto CheCose'." ) ); | ||
KMessageBox::questionYesNo( 0, i18n( " | KMessageBox::questionYesNo( 0, i18n( "Ciao Mondo" ), | ||
i18n( " | i18n( "Ciao" ), yesButton ); | ||
return app.exec(); | return app.exec(); | ||
} | } | ||
</code> | </code> | ||
Il primo codice specifico di KDE che incontriamo in questo programma è {{class|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 {{class|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 {{class|KAboutData}} che abbiamo appena creato, in modo da poter usare le opzioni <tt>--version</tt> o <tt>--author</tt> | |||
Quindi adiamo a creare l'oggetto {{class|KApplication}}. Ciò bisogna farlo esattamente una volta in ogni programma, visto che è necessario per cose come l'[[Development/Tutorials/Localization/i18n|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 {{class|KGuiItem}}. Il primo argomento del costruttore di {{class|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 <tt>QString</tt>. 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 <tt>{{class|KMessageBox}}::questionYesNo()</tt> 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 <tt>KGuiItem yesButton</tt> 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 [[Development/Tutorials/Localization/i18n|tutorial sulla localizzazione]]. | |||
== | Abbiamo finito per quanto riguarda il codice. Ora la compilazione e la prova. | ||
== Compilazione == | |||
Vorrai usare [[Development/Tutorials/CMake|CMake]] come ambiente di compilazione. Devi fornire un file chiamato CMakeLists.txt, cmake usa questo file per generare tutti i Makefiles. | |||
=== CMakeLists.txt === | === CMakeLists.txt === | ||
Crea un file di nome CMakeLists.txt nella stessa cartella di main.cpp con questo contenuto: | |||
<code> | <code> | ||
project (tutorial1) | project (tutorial1) | ||
Line 103: | Line 104: | ||
install(TARGETS tutorial1 ${INSTALL_TARGETS_DEFAULT_ARGS}) | install(TARGETS tutorial1 ${INSTALL_TARGETS_DEFAULT_ARGS}) | ||
</code> | </code> | ||
In | La funzione <tt>find_package()</tt> 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 <tt>KDE4_INCLUDES</tt> contenente il percorso ai files header di KDE4. | ||
Per permettere al compilatore di trovare questi files, passiamo quella variabile alla funzione <tt>include_directories()</tt> la quale aggiunge gli header di KDE4 al percorso di ricerca degli headr. | |||
Poi creiamo una variabile chiamata <tt>tutorial1_SRCS</tt> con la funzione <tt>set()</tt>. In questo caso la impostiamo con il nome del nostro unico file sorgente. | |||
Quindi usiamo <tt>kde4_add_executable()</tt> per creare un eseguibile chiamato <tt>tutorial1</tt> dai sorgenti elencati nella nostra variabile <tt>tutorial1_SRCS</tt>. In seguito, facciamo il link del nostro eseguibile alle librerie kdeui di KDE4 con <tt>target_link_libraries()</tt> e la variabile <tt>KDE4_KDEUI_LIBS</tt> precedentemente riempita dalla funzione <tt>find_package()</tt>. La riga che comincia con <tt>install</tt> scrive un target di default "install" dentro al Makefile. | |||
=== Make | === Make ed Esecuzione === | ||
Puoi invocare CMake e make manualmente: | |||
mkdir build && cd build | mkdir build && cd build | ||
cmake .. # | cmake .. # Nota questi due punti - non è una mancanza, ma sta per "cartella superiore". | ||
make | make | ||
Oppure, se hai preparato il tuo ambiente come descritto in [[Getting_Started/Build/KDE4|Getting Started/Build/KDE4]], puoi compilare questo codice con: | |||
cmakekde | cmakekde | ||
Quindi lancialo con: | |||
./tutorial1 | |||
== Continuare == | |||
Now you can move on to [[Development/Tutorials/Using_KXmlGuiWindow|using KXmlGuiWindow]]. | Now you can move on to [[Development/Tutorials/Using_KXmlGuiWindow|using KXmlGuiWindow]]. | ||
Ora puoi continuare verso [[Development/Tutorials/Using_KXmlGuiWindow|usare KXmlGuiWindow]]. | |||
[[Category:C++]] | [[Category:C++]] |
Revision as of 11:35, 28 November 2008
Development/Tutorials/First_program
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
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.

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>
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 visualizzabile.
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 sotto la quale questo codice è rilasciato.
KAboutData::License_GPL,
// Copyright
ki18n("(c) 2007"),
// Testo opzionale mostrato nella finestra "Informazioni su".
// Può contenere qualunque informazione desiderata.
ki18n("Un po' di testo..."),
// La stringa con la homepage del programma.
"http://tutorial.com/",
// L'indirizzo email per la segnalazione di bug.
"submit@bugs.kde.org");
KCmdLineArgs::init( argc, argv, &aboutData );
KApplication app;
KGuiItem yesButton( i18n( "Ciao" ), QString(),
i18n( "Questo è un tooltip" ),
i18n( "Questo è un testo di aiuto CheCose'." ) );
KMessageBox::questionYesNo( 0, i18n( "Ciao Mondo" ),
i18n( "Ciao" ), yesButton );
return app.exec();
}
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 (KDE4Defaults)
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 headr.
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, ma sta 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
Continuare
Now you can move on to using KXmlGuiWindow.
Ora puoi continuare verso usare KXmlGuiWindow.