[ Pobierz całość w formacie PDF ]

my poszczególne widgety (w powyższym przykładzie /// @todo do something with the command line args
tylko dla etykiety TitleLBL). Nim jednak wątek zacznie here
działać, to zmiennej stop podajemy wartość zero, aby */
być pewnym, że po wykonaniu ply->start();, wątek mainWin = new grajek();
zadziała. app.setMainWidget( mainWin );
Drugi przypadek pojawia się, gdy wątek został mainWin->show();
już utworzony i chcemy go zatrzymać, aby utworzyć /*
nowy wątek dla innego utworu wybranego przez args->clear();
użytkownika. Procedura ta jest blizniaczo podobna }
do poprzedniej z jednym wyjątkiem na samym począt- */
ku:
www.linux.com.pl 65
dla programistów
shed() zwraca wartość false, to znaczy, że wątek jeszcze
działa. Do przerwania wątku wystarczy zmienić wartość
zmiennej stop na różną od zera. Dla bezpieczeństwa cze-
kamy na poprawne zakończenie działania wątku wywoła-
niem ply->wait().
W ten sposób przy okazji omawiania czynności związa-
nych z przyciskiem Start przedstawiłem również, jakie czyn-
ności wykonujemy, aby zatrzymać odtwarzanie utworu.
Poprawki w funkcji main
Ostatnim elementem, którym trzeba się zająć, jest funk-
cja main. KDevelop po utworzeniu projektu wygenerował
kod, który zamiast naszego nowo zaprojektowanego okna
wyświetla widget QLabel. Fragment funkcji main po nanie-
sieniu poprawek zawiera Listing 6. Poprawki są następu-
jącego rodzaju: usuwamy test, czy nastąpiło odtworzenie
aplikacji, czyli konstrukcję if(app.isRestored()) ... else
... obejmujemy komentarzem. W sekcji else znajdował się
kod tworzący zawartość okna aplikacji. Pozostawiamy tylko
ten fragment, który tworzy nowy obiekt grajek. Jeśli Czytel-
nik w swoim projekcie inaczej nazwał widget, który repre-
zentuje nasze okno oraz plik podklasy, to zmiana będzie
polegać na utworzeniu innego obiektu. Pamiętajmy też, aby
dołączyć plik nagłówkowy z definicją własnej klasy. Warto
jeszcze w pierwszych liniach funkcji main zmienić bądz uzu-
pełnić takie dane, jak imię i nazwisko autora oraz numer
wersji programu, w deklaracji obiektu KaboutData. Pozosta-
łą część pliku pozostawiamy bez żadnych zmian.
Zakończenie
Zachęcam wszystkich, aby wprowadzić obsługę nowych
formatów plików, takich jak choćby WAV, wykorzystując
bibliotekę Audiofile. Najłatwiej będzie to zrobić tworząc
nową klasę opartą o typ QThread, dedykowaną konkret-
nym typom plików. Jest to zadanie na przysłowiową minut-
kę. Przydatnym unowocześnieniem będzie dodanie do
aplikacji listy odtwarzanych utworów. Dla tych wszystkich,
którzy chcą zdobyć niezbędne doświadczenie, zachęcam
do modyfikacji projektu, który znajduje się na płycie CD.
W Sieci:
" Strona domowa projektu KDE:
http://www.kde.org/
" Strona dla programistów KDE i QT:
http://developer.kde.org/
" Strona środowiska dla programistów KDevelop:
http://www.kdevelop.org/
" Strona domowa projektu ALSA:
http://www.alsa-project.org/
" Strona domowa fundacji Xiph.org:
http://www.xiph.org/
" Strona standardu OGG/Vorbis:
http://www.vorbis.com/
66 kwiecień 2004 [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • loko1482.xlx.pl