O informatyce, po swojemu, inaczej

Skopałem kod

Wszystko działało. Nawet lepiej-z punktu widzenia użytkownika „miało to ręce i nogi”. Teraz jednak muszę dostroić i dokręcić wszystkie trybiki. No i właśnie padłem ofiarą swojej pomysłowości i skopałem kod. Zacznijmy powoli i od…

środka w zasadzie

Tak, kiedy już wszystko zostało dograne, począwszy od przejścia z okna do okna i bezstratną nośnością muzyki, sygnału oraz (przypuszczalnie, bo na pewno niepoprawnie akademicko) przerywanie utworu po zamknięciu okna. Wtedy właśnie podczas prezentacji Autorce pomysłu ukazały się kolejne mankamenty i niedociągnięcia, na które nie zwróciłem uwagi, bo nie skupiałem się na nich. Oto ich krótka lista:

  • grafika trochę rozmijająca się tematycznie, niewskazująca/sugerująca kategorii
  • źle skalowany obraz w polu
  • dźwięk odtwarzany mimo zamknięcia okna.

Teraz kiedy sprostowałem to wszystko, jeszcze długo przed lutym w zasadzie, gdzieś w połowie stycznia wyszedł nam trochę inny kłopot. Otóż 9 kategorii to praktycznie zbyt duże rozdrobnienie zmuszająca nas do tworzenia na siłę kolejnych rzeczy do tych kategorii, jak i ich samych w zasadzie. Dlatego też pojawił się w zasadzie taki szczegół drobny, niby nieistotny na początku, ale teraz bardzo rażący-nie może być po prostu narysowana siatka z kafelkami w Qt Designer.

Pierwsza próba

Obserwując z bliska te swoje klasy i przyglądając się uważnie, uznałem, że „w sumie to nie ma potrzeby dzielić na widget i jeszcze do tego kontener, który przechowa mi zawartość z pliku” (mowa tutaj o klasach myQLabel i Item). Postanowiłem więc za pomocą prób i błędów skleić dwie klasy w jedną. Niestety do końca to wypaliło.

Wnioski

Kompilator dał mi wyraźnie do zrozumienia, że nie mogę stosować QVector do klasy, która dziedziczy po Label (nie do końca jeszcze rozumiem dlaczego, także za odpowiedź w komentarzu będę wdzięczny) i będę musiał się siłować prędzej, czy później z QList, którego ostatnimi czasy jakoś podświadomie unikałem, nie znając w zasadzie przyczyny. Na chwilę obecną po 2 dniach zmagania uznałem, że w zasadzie interaktywne pole, które zachowuje się niczym przycisk, może się jeszcze kiedyś przydać, a przy tym niekoniecznie musi być ścieżka do dźwięku, przechowywana nazwa i obraz. Dlatego też myQLabel odłożę go sobie na półkę jako szablon, który mam nadzieję, że jeszcze kiedyś mi się przyda.

Druga próba

Skoro i tak siatka musi być dynamiczna, po przeszukania stackoverflow i szybko przyswojone tworzenie dynamiczne Label’i zostało postawione przed znakiem zapytania-jak rozmieścić i o jakich wymiarach?
Prototyp był wyposażony w obrazy 200 × 100 – trochę zbyt małe i przy większych szczegółach na obrazie miniaturka stawała się niejednoznaczna dla kategorii. Po chwili kalkulacji z kartą i ołówkiem w ręku zostały udokumentowane parametry dla okna związanego z wyświetlaniem graficznych miniatur do kategorii.

Source: Owned by the author

Wniosek

Warto było kiedyś poczytać o złotej proporcji-tworzenie, a w zasadzie projektowanie interfejsów wydaję się znacznie prostsze.

Na szczęście

Postęp idzie do przodu, metodą trochę wciąż kulawą, bo prób i błędów. Najważniejsze, że powoli do przodu. Głównie brakuje wciąż czasu na zebranie materiałów, tj. zdjęć i dźwięków, tak aby nie mieć za specjalnie problemów z licencjami i prawami autorskimi. Uważam, że tym jednak zagadnieniem zajmiemy się gdzieś w połowie maja. Oczywiście zachodzące zmiany możecie obserwować na GitHub, a sam kod możecie pobrać, być może będzie coś potrzebować z niego.