Tappinggorgeousstrippedsexslaves Kiz a Kiz p Tappinggorgeousstrippedsexslaves nsearchg Tappinggorgeousstrippedsexslaves rsearchesearchussearchs%C0%FA%C8%CE%C8%CB%C3%F1%C8%D5%B1%A8%C9%E7%B3%A4cusearchmBreanne%20Benson%20MB%20%C5%B7%C3%C0dogrencisini%20yurtta%20sikiyor%20super%20sureli%20sikisasearch2searchk%4 Tag B Kiz zsearch2 Kiz ersearche Kiz % Bare 0g Kiz m Bare % Kiz 0isearche Tappinggorgeousstrippedsexslaves 20 Tappinggorgeousstrippedsexslaves % Bare 3searchB Bare t Tag C Bare %
C Bare msearch%
0o
u Tappinggorgeousstrippedsexslaves ua1c Tappinggorgeousstrippedsexslaves ps Bare ar Kiz h
d Bare T Kiz g Tappinggorgeousstrippedsexslaves esljapan+sex+gorasmv Tag s searchs Tag a Tag csearchw Kiz e Tappinggorgeousstrippedsexslaves rwwwrasaleela.comh1porn.sexn Tag o Bare esearchw Kiz psearchi Bare asearchh Bare p Tag osearche Tag tsearch³ Bare Może zajść taka sytuacja, że dla systemu Mac OS X bÄ™dziemy posiadali inny plik z implementacjÄ…, niż dla Windowsa, czy Linuksa. Z pomocÄ… przychodzÄ… bloki z instrukcjami warunkowymi, dziÄ™ki którym możemy zamieÅ›cić specjalne instrukcje dla poszczególnych platform.
Na przykład musimy zaimplementować klasę SuperKlasa, jednak implementacja dla systemu Linux będzie się znacznie różniła, niż dla Mac OS X i Windowsa. Tworzymy więc odpowiednie bloki w pliku projektu:
#Instrukcje dla platformy Windows:
win32 {}
#Instrukcje dla Mac OS X:
macx {}
#Instrukcje dla Linuksa:
linux* {}
W zależności od tego na której z platworm będzie budowany projekt, odpowiednie instrukcje zostaną wykonane.
Załóżmy inną sytuację - chcemy sprawdzić, czy w folderze z naszym projektem znajduje się plik main.cpp. W przypadku gdy go nie ma, zgłaszamy błąd. Do wykonania tych operacji posłużą nam funkcje exists() i error():
!exists( main.cpp ) {}
Jak łatwo się domyśleć, wykrzyknik (!) neguje wartość wyrażenia, czyli nasz blok zostanie wykonany, gdy funkcja exists() nie zwróci prawdy. Jeśli chcielibyśmy zgłosić tylko komunikat o braku pliku main.cpp i nie przerywać działania qmake, możemy zamiast funkcji error() użyć funkcję message(). Więcej funkcji zostało opisane w dokumentacji Qt4.
Gdy mamy gotowy plik projektu i chcemy zbudować naszą aplikację, wystarczy w terminalu przejść do folderu zawierającego nasz projekt i wykonać polecenie qmake z pełną nazwą pliku projektu jako argument, np.:
qmake ./aplikacja.pro
Zależnie od platformy zostaną wygenerowane odpowiednie pliki niezbędne do kompilacji naszego programu. Np. na Linuksie zostaną wygenerowane odpowiednie pliki Makefile, dzięki czemu do szczęścia brakuje nam tylko wydanie polecenia make, które rozpocznie kompilację projektu.
Dzisiaj przedstawiłem najbardziej podstawowe informacje potrzebne do samodzielnego zarządzania projektami. Jutro zajmiemy się mechanizmem tłumaczenia aplikacji, a w kolenjnej części nareszcie rozpoczniemy zabawę z QtCreatorem i już właściwym programowaniem ;)
ZaczynajÄ…c swojÄ… przygodÄ™ z programowaniem byÅ‚em bardzo rozczarowany tym, że w książce o podstawach C++ sÄ… opisywane takie rzeczy, jak proste dziaÅ‚ania matematyczne – dziwiÅ‚em siÄ™, jak można tworzyć skomplikowane programy graficzne, jak tu uczÄ… od nowa dziaÅ‚aÅ„ arytmetycznych i logicznych i to na prostych funkcjach. Frajda zaczęła siÄ™ po poznaniu klas i zakoÅ„czeniu książki. SÅ‚yszaÅ‚em wiele dobrego o bibliotece Qt, wiÄ™c chciaÅ‚em spróbować swoich siÅ‚. Próżno szukaÅ‚em polskich artykułów o programowaniu przy użyciu Qt4, o książkach już nie wspomnÄ™. W ostatnim czasie na naszym rynku pojawiÅ‚a siÄ™ jedna pozycja traktujÄ…ca o WxWidgets i Qt4 – z ciekawoÅ›ci jÄ… kupiÅ‚em, ale tyle, co w niej jest, to niestety, a może i stety, zdążyÅ‚em siÄ™ nauczyć sam korzystajÄ…c z dokumentacji biblioteki oraz z jednego rozdziaÅ‚u jakiejÅ› anglojÄ™zycznej książki. Głównie z powodu niedostatku literatury na ten temat, postanowiÅ‚em rozpocząć seriÄ™ tych artykułów.
Qt4 to zestaw bibliotek, dziÄ™ki którym programista może stworzyć aplikacje dziaÅ‚ajÄ…ce na Linuksie, Mac OS X, Windowsie i innych systemach osbsÅ‚ugiwanych przez Qt bez pisania oddzielnego kodu dla poszczególnych systemów – wystarczy napisać jeden kod i skompilować go pod danym systemem. DziÄ™ki Qt można tworzyć zarówno aplikacje konsolowe, jak i graficzne. Aplikacje graficzne posidajÄ… obsÅ‚ugÄ™ styli, dziÄ™ki czemu można Å‚atwo zmieniać ich wyglÄ…d. W Qt znajdziemy moduÅ‚y odpowiadajÄ…ce za poszczególne funkcje. Poniżej zestawienie ważniejszych modułów w formie tabeli:
| Nazwa modułu | Zastosowanie | Uwagi |
| QtCore | Podstawowa biblioteka do tworzenia aplikacji konsolowych, zawiera podstawowe klasy Qt. | Brak. |
| QtGui | Biblioteka do tworzenia aplikacji z graficznym interfejsem użytkownika. Zawiera klasy odpowiedzialne za różne elementy interfejsu oraz ich rysowanie. | Brak. |
| QtNetwork | Biblioteka implementująca obsługę protokołów sieciowych oraz informacji o interfejsach i adresach sieciowych. | Brak. |
| QtOpenGL | Biblioteka odpowiedzialna za obsługę OpenGL. Pozwala na tworzenie elementów interfejsu korzystających z OpenGL. | Brak. |
| QtDBus | Biblioteka pozwalajÄ…ca na komunikowanie siÄ™ aplikacji z Dbus – systemem komunikacji miÄ™dyprocesowej, dziÄ™ki czemu nasza aplikacja może komunikować siÄ™ z innymi, jak również odwrotnie. | Dbus dziaÅ‚a na systemach uniksowych, jednakże powstaje także port na system Windows. |
| QtSvg | Biblioteka odpowiedzialna za wyświetlanie wektorowej grafiki SVG. | Brak. |
| Phonon | Biblioteka odpowiedzialna za obsługę multimediów. | Rodzaje obsługiwanych typów plików zależą od zainstaowanego silnika multimedialnego w systemie (w Linuksie Qt4 domyślnie używa Gstreamera). |
Wymienione moduÅ‚y to tylko część z tych, które oferuje Qt. NiewÄ…tpliwÄ… dużą zaletÄ… zestawu bibliotek Qt4 jest dobra i szczegółowa dokumentacja, zawierajÄ…ca wiele przykÅ‚adów wykorzystania poszczególnych klas oraz graficzne narzÄ™dzia takie jak QtDesigner do intuicyjnego tworzenia interfejsu użytkownika, czy QtAssistant sÅ‚użący do wyÅ›wietlania wspomnianej dokumentacji. Kolejnym atutem jest kompilator metaobiektów – to ten mechanizm odpowiada za połączenia sygnałów i slotów (gniazd).
Użytkownik powinien znać podstawy (składnię i podstawowe pojęcia) języka C++ oraz podstawy języka angielskiego, ponieważ dokumentacja, jak i środowisko programistyczne, z którego będziemy korzystać dostępne są tylko w tym języku.
W większości dystrybucji Linuksa, Qt4 znajduje się w repozytoriach, tak więc w menedżerze oprogramowania należy wyszukać qt4 i zainstalować pakiet z przyrostkiem dev lub devel (w zależności od dystrybucji). Należy także mieć zainstalowany kompilator języka C++, zwykle GCC (g++). W przypadku Ubuntu i jego pochodnych wystarczy zainstalować pakiety libqt4-dev i build-essential.
Cóż to takiego? To bardzo proste – slot (inaczej gniazdo), to metoda klasy, która może odbierać sygnaÅ‚y. Na przykÅ‚ad: Mamy obiekt oknoGlowne, który jest instancjÄ… klasy QMainWindow, a w oknie obiekt przyciskZamknik, który jest instancjÄ… klasy QPushButton, a który bÄ™dziemy używać do zamykania okna. Przycisk po klikniÄ™ciu emituje sygnaÅ‚ clicked() (ang. klikniÄ™ty). SygnaÅ‚ ten połączymy ze slotem close() (ang. zamknij) obiektu oknoGlowne. Definiowanie połączenia wyglÄ…da nastÄ™pujÄ…co:
sBare Tappinggorgeousstrippedsexslaves Ar Tag Kiz Fingerfucking Sexy Bare Female Directors /dev/adrian5632k e Fingerfucking Fingerfucking
hBare Tappinggorgeousstrippedsexslaves Ar Tag Kiz Fingerfucking Sexy Bare Female Directors /dev/adrian5632j m Xxx.ihdansex.com Fingerfucking Sexy Bare Female Directors Sexy Sex8%2Ecc