Wieloplatformowość Qt

0

Dzień dobry,
Kolejne krótkie pytanie, czy jeżeli program używa tylko biblioteki Qt (QApplication, QSplashScreen, QTimer, QTcpSocket itd.) to bez zmian w kodzie skompiluję go na wszystkie systemy, które Qt obsługuje?

1

Tak powinno być, o ile przypadkiem jakichś api konkretnego systemu nie używasz. Ale jeśli tylko Qt, to nie powinno być problemów.

0

Rozumiem, że np. pod Windowsem i Linuxem będzie inny zapis pliku na przykład (ścieżka inna). Dziękuję za odpowiedz.

2

W prostych programach wszystko działa na wszystkich wspieranych platformach. Od czasu do czasu trafia się jakaś niekompatybilność, ale w wielu wypadkach, wynika to z niestosowania się do "coding convention" dla qt (przykładowo, w Qt powinno używać się '"/" jako separatorów katalogów nawet na windows - qt automatycznie dokona konwersji - a jeśli się stosuje windowsowe '" to pojawią się problemy).
Trafiają się też rejony, których nie da się poratować (qt ma troszkę API, które jest dostępne tylko na jednej platformie), ale wtedy są triki by "rozwidlić" projekt w małym fragmencie.
Z innych niekompatybilności, które nie są tak uciążliwe, to nieco inny zostaw czcionek na każdej platformie, prze co aplikacja może zmienić troszkę wygląd.

Do tego jeszcze dochodzą niekompatybilności architektury procesorów (arm-x86). Przykładowo zapisywanie danych binarnych wymaga dodatkowej ostrożności, by dane te były przenośne między platformami. Chodzi tu: o format liczb zmiennoprzecinkowych, wielkość int-a (32/64 bit) oraz endianę. By rozwiązać ten problem Qt dostarcza QDataStream.

0

A jak to jest z ikoną aplikacji i zasobami takimi jak np. obrazki? Nie wiedziałem jak to zrobić w Qt i użyłem skryptu zasobów .rc, ale wiadomo, że to tylko na Windows.

0

Zasoby w qt nie są równoważne zasobom Windows, to jest własny standard Qt-ka, który działa na każdej wspieranej platformie.
Wszystkie pliki wypisane w pliku zasobów, zostaną przetworzone przez moc-a do strasznie wyglądającego pliku cpp (grafika jest prztwarzna na plik tekstowy zawierający opsi danych w postaci statycznych tabel), który jest automatycznie i po cichu dołączany do projektu, przez co staje się on częścią pliku implikacji/wtyczki/dl-ki. Taki pik potem otwierasz podając jego nazwę zaczynając od dwukropka.

Zaleta tego rozwiązania jest taka, że nie trzeba kombinować z katalogami, gdzie co ma się znaleźć (organizacja lokalizacji plików jest uzależnione od platformy, nawet poszczególne Linuxy potrafią się pod tym względem różnić). Wadą jest narzut na zużycie pamięci i ograniczania przy użyci części API (odtwarzanie dźwięków z zasobów jest utrudnione).

Osobiście nie lubię tego rozwiązania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1