Development/Tutorials/First program (csb)
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.
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:
#include <KApplication>
#include <KAboutData>
#include <KCmdLineArgs>
#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.