Development/Tutorials/First program (csb)

From KDE TechBase
Revision as of 09:28, 14 June 2009 by Tampakrap (talk | contribs) (lang error)


Development/Tutorials/First_program

Witôj Swiece
Tutorial Series   Tutorial dlô zaczinającëch
Previous   C++, Qt, KDE4 development environment
What's Next   Tutorial 2 - KXmlGuiWindow
Further Reading   CMake

Abstract

Twòjô pierszô programa mô witac swiat drësznym "Witôj Swiece". Do tegò ùżëjemë KMessageBox ë dodómë swòje nôdpisë do knąpów.

Tip
Bë wëdostac wicy wëdowiédzë ò równojaczi klase z jaką sã pòtkôsz, Konqueror òferëje chùtczé skrodzënë. Téj, żebë òbaczëc jinfòrmacëje ò KMessageBox, wpiszë le "kde.kmessagebox" w Konquerorze a dokùmentacëjô òstónié wëskrzëniónô.


Tip
Mòżesz chcec brëkòwac KDevelop do swòjech projektów. Dofùlowùje òn kòd, ùmòżebniô łatwi przëstãp do przezéraniô dokùmentacëji API ë mô wspiarcé dlô debugòwaniô.

Przeczëtôj nen tutorial abë ùstawic dobrze KDevelop dlô nech dzejaniów. Nôpierwi chcesz sprôwdzëc, czë ùstôwë robią co do nich słëchô òtmëkającë bëtną aplikacëjã KDE 4 w KDevelop.

Równak bãdzesz wcyg mùszôł editowac CMake rãczno..


Kòd

Wszëtczé kòdë jaczich je nót to le jeden lopk: main.cpp. Ùsôdzë gò z kòdã pòdónym niżi:

  1. include <KApplication>
  2. include <KAboutData>
  3. include <KCmdLineArgs>
  4. include <KMessageBox>

int main (int argc, char *argv[]) {

   KAboutData aboutData(
                        // Miono programë brëkòwóné bùtën.
                        "tutorial1",
                        // Miono katalogù wiadła
                        // Jeżlë ni ma, miono programù mdze brëkòwóné.
                        0,
                        // Miono jaczé sã wëskrzeni.
                        ki18n("Tutorial 1"),
                        // Wersëjô programë.
                        "1.0",
                        // Krótczi òpisrnk co robi aplikacëjô.
                        ki18n("Displays a KMessageBox popup"),
                        // Licencëjô kòdu
                        KAboutData::License_GPL,
                        // Aùtorsczé prawa
                        ki18n("(c) 2007"),
                        // Òptacëjny tekst wëskrzeniony w òknie Ò programie.
                        // Mòże tam bëc co le chcesz...
                        ki18n("Some text..."),
                        // Domôcô starna programë.
                        "http://tutorial.com/",
                        // Adresa e-mail dlô repòrtowaniô felów.
                        "[email protected]");
   KCmdLineArgs::init( argc, argv, &aboutData );
   KApplication app;
   KGuiItem yesButton( i18n( "Hello" ), QString(),
                       i18n( "This is a tooltip" ),
                       i18n( "This is a WhatsThis help text." ) );
   KMessageBox::questionYesNo( 0, i18n( "Hello World" ),
                               i18n( "Hello" ), yesButton );
   return 0;

} Pierszi, òsoblëwi dlô KDE kòd jaczi chcemë pòznac w ti programie je KAboutData. Na klasa je brëkòwónô do trzëmaniô wëdowiédzë ò programie taczich jak krótczi òpisënk, aùtorowie czë licencëjô. W wikszi dzél programów bãdze zwëskôł z ti klasë.

Dali przeńdzemë do KCmdLineArgs. Na klasa je brëkòwónô do trzëmaniô argùmentów zrëszeniowëch, na przëmiôr, òtmëkaniô editora z lopkã. Równak terô, më zajinicjalizëjëmë ją z òbiektã KAboutData żebë brëkòwac przełączników --version czë --author.

Zôs ùsôdzemë òbiekt KApplication. To mùszi bëc zrobioné le jeden rôz w kòżdi programie, ga je to nót dlô rzeczów taczich jaki18n.

Terô żlë mómë ju zrëchtowóné wszëtczi ùstawë, mòżemë jic dali z barżi jinteresującëma sprawama z nają aplikacëją. Chcemë ùsôdzëc dialogòwi òkno, ale dopasëjemë pòd se jedną z knąpów. Do etgò nót nama mdze òbiekt KGuiItem. Pierszi argùment w kònstruktorze KGuiItem to tekst jaczi wëskrzeni sã w elemence (w naszim przëtrôfkù to knąpa). Téj mómë òptacëjã bë dac ikònã dlô knąpë, ale ga më ji nie chcemë tedr dómë tu QString(). Dali je pòdpòwiesc (to cos co sã wëskrzeni jeżlë najachac na knąpã mëszą) a na kùńcu tekst dlô "Co to je?" (przëstãpné przez klëkniãcé prawą knąpą mëszë albò Shift-F1).

Terô czej momë nasz element, mòżemë ùsôdzëc dialogòwi òkno. Wëwòłamë fùnkcëjã KMessageBox::questionYesNo() co domëslnô wëskrzëniwô òko z knąpama "Jo", "Nié". Drëdżi argùment to tekst jaczi sã pòkaże w tekstowim pòlu nad knąpą. Trzecy to titel òkna a zôs przepiszemë KGuiItem dlô knąpë "Jo" do ùsôdzonégò chùdzy KGuiItem guiItem.

Bôczë, że wszëtczi nôdpisë jaczi bãdą widzawné dlô brëkòwnika są wëwòłóné przez fùnkcëjã i18n(). To je mùsz dlô tegò, bë ne wiadła mògłé bëc przedolmaczoné. Wicy ò dolmaczënkach nalezc mòżesz w ùczbòwnikù pò lokalizowanim.

Në, mómë ju fardich naji kòd. Terô czas na bùdowanié ë sprawdzenié.

Bùdowanié

Chcesz ùżëc CMake dlô zbùdowaniô òkrãżégò. Môsz zrobioné lopk CMakeLists.txt, jaczi wëzwëska cmake do wëgenerowaniô wszëtczich lopków Makefile.

CMakeLists.txt

Ùsôdzë lopk nazwóny CMakeLists.txt w tim katalogù co main.cpp. W lopkù tim mô nalézc so zamkłosc: 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}) Fùnkcëjô find_package() szëkô za paczétã jaczi żądôsz (w tim przëmiôrze KDE4) ë ùstawiô niechtërne zmieniwne co òpisëją môl w jaczim nalézc jidze nagówczi i biblioteczi paczétów. Tu mdzemë brëkòwelë zmieniwny KDE4_INCLUDES co trzëmô stegnã do nagłówkòwëch lopków dlô KDE4.

Żebë pòmóc kòmpilatorowi nalézc ne lopczi, dómë nã zmieniwną do fùnkcëji, co dodôwô nagłówczi KDE4 do stegnë szëkaniô za nagłówkama.

Dali më ùsôdzemë zmieniwną zwóną tutorial1_SRCS brëkùjąc fùnkcëji set(). W tim przëmiôrze më prosto dómë miono najégò jedurnégò zdrojowégò lopka.

Zôs dómë kde4_add_executable() abë ùsôdzëc zrëszeniowi lopk pòzwóny tutorial1 ze zdrojowich lopków wëpisónëch w zmieniwny tutorial1_SRCS. Pò temù, zlënkùjemë naji zrëszeniowi lopk do biblioteczi KDE4 kdeui library brëkùjącë target_link_libraries() ë zmieniwny KDE4_KDEUI_LIBS co ùsôdzonô bëła przez fùnkcëjã find_package(). Liniô naczinającô sã install zapisëjë domëslny cél "install" w Makefile.

Wëkònôj ë zrëszë

Mòżesz rãczno wëwòłac CMake:

mkdir build && cd build
cmake .. # Bôczë na ne dwa pùnktë - to nie fela, le òdwòłanié do katalogù wëżi".
make

Abò, żlë môsz ùstawioné òkrãżé jak je to òpisóné w Getting Started/Build/KDE4, mòżesz skòmpilowac kòd pòlétã:

cmakekde


Terôzkù zrëszë programã:

./tutorial1

Biéj dali

Terô mòżesz jic dali bë naùczëc so brëkòwaniô KXmlGuiWindow.