Narzędzia użytkownika

Narzędzia witryny


sk2:qt

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
Ostatnia wersja Both sides next revision
sk2:qt [2021/12/22 21:19]
jkonczak [Sieć w Qt]
sk2:qt [2022/11/28 15:41]
jkonczak [Wprowadzenie]
Linia 18: Linia 18:
  
 === O Qt === === O Qt ===
-[[https://​www.qt.io/​product|[1]]] [[https://​pl.wikipedia.org/​wiki/​Qt|[2]]]+Qt to framework (zestaw bibliotek i narzędzi) dla języka C+''''​+. Duży nacisk w Qt jest położony na budowę aplikacji z graficznym interfejsem użytkownika i tworzenie wieloplatformowego kodu. \\ 
 +[[https://​www.qt.io/​product|Strona produktu]]     [[https://​wiki.qt.io/​About_Qt|Strona "O Qt" w wiki Qt]]     [[https://​pl.wikipedia.org/​wiki/​Qt|Polska Wikipedia o Qt]]
  
 === Narzędzia === === Narzędzia ===
-Qt do wersji 5 jako podstawowego systemu budowania używa dostarczonego z Qt programu ''​[[http://​doc.qt.io/​qt-5/​qmake-manual.html|qmake]]''​. Dodatkowo Qt 5 wspiera oficjalnie CMake (nieoficjalnie Qt jest wspierane też przez inne systemy budowania).\\+Qt do wersji 5 jako podstawowego systemu budowania używa dostarczonego z Qt programu ''​[[https://​doc.qt.io/​qt-5/​qmake-manual.html|qmake]]''​. Dodatkowo Qt 5 wspiera oficjalnie CMake (nieoficjalnie Qt jest wspierane też przez inne systemy budowania).\\
 Qt od wersji 6 jako podstawowego systemu budowania używa CMake ([[https://​doc.qt.io/​qt-6/​cmake-manual.html|dokumentacja dla Qt]]) nie zaprzestając rozwoju qmake. Qt od wersji 6 jako podstawowego systemu budowania używa CMake ([[https://​doc.qt.io/​qt-6/​cmake-manual.html|dokumentacja dla Qt]]) nie zaprzestając rozwoju qmake.
  
-Do graficznego projektowania GUI opartego o [[https://​pl.wikipedia.org/​wiki/​Wid%C5%BCet|widżety]] dostarczany jest program ''​[[http://​doc.qt.io/​qt-5/​qtdesigner-manual.html|designer]]'',​ generujący pliki w formacie XML. Następnie programem ''​[[http://​doc.qt.io/​qt-5/​uic.html|uic]]''​ są one konwertowane na kod w C+''''​+. \\+Do graficznego projektowania GUI opartego o [[https://​pl.wikipedia.org/​wiki/​Wid%C5%BCet|widżety]] dostarczany jest program ''​[[https://​doc.qt.io/​qt-6/​qtdesigner-manual.html|designer]]'',​ generujący pliki w formacie XML. Następnie programem ''​[[https://​doc.qt.io/​qt-6/​uic.html|uic]]''​ są one automatycznie ​konwertowane na kod w C+''''​+. \\
 <​html><​small></​html>​Qt dostarcza też silnik [[https://​doc.qt.io/​qt-6/​qmlapplications.html|języka QML]] i biblioteki [[https://​doc.qt.io/​qt-6/​qtquickcontrols-index.html|Qt Quick]] do budowy GUI w QML. \\ Ponadto ''​assistant''​ pozwala przeglądać dokumentację,​ ''​linguist''​ w łatwy sposób umożliwia tłumaczenie programu. \\ Częścią SDK do Qt jest też IDE ''​qtcreator''​.<​html></​small></​html>​ <​html><​small></​html>​Qt dostarcza też silnik [[https://​doc.qt.io/​qt-6/​qmlapplications.html|języka QML]] i biblioteki [[https://​doc.qt.io/​qt-6/​qtquickcontrols-index.html|Qt Quick]] do budowy GUI w QML. \\ Ponadto ''​assistant''​ pozwala przeglądać dokumentację,​ ''​linguist''​ w łatwy sposób umożliwia tłumaczenie programu. \\ Częścią SDK do Qt jest też IDE ''​qtcreator''​.<​html></​small></​html>​
  
 === Pętla zdarzeń, sygnały i sloty === === Pętla zdarzeń, sygnały i sloty ===
-Typowe aplikacje w Qt wykorzystują [[http://​doc.qt.io/​qt-5/​qapplication.html#​exec|pętlę zdarzeń]]. Obiekty mogą zażądać obsługi zdarzenia (zdarzenie w Qt nazywa się ''​signal''​),​ a programista za pomocą funkcji ''​connect''​ określa jaka funkcja (nazywana w Qt ''​slot''​) ma być wywoływana gdy wystąpi podane zdarzenie ([[http://​doc.qt.io/​qt-5/​signalsandslots.html|signals and slots]]).+Typowe aplikacje w Qt wykorzystują [[https://​doc.qt.io/​qt-6/​qapplication.html#​exec|pętlę zdarzeń]]. Obiekty mogą zażądać obsługi zdarzenia (zdarzenie w Qt nazywa się ''​signal''​),​ a programista za pomocą funkcji ''​connect''​ określa jaka funkcja (nazywana w Qt ''​slot''​) ma być wywoływana gdy wystąpi podane zdarzenie ([[https://​doc.qt.io/​qt-6/​signalsandslots.html|signals and slots]]).
 \\ \\
-Qt korzysta z dodatkowego preprocesora ''​[[http://​doc.qt.io/​qt-5/​why-moc.html|moc]]''​. Od Qt5 użycie ''​moc''​ można pominąć, jeśli korzysta się z nowej składni funkcji ''​connect''​ i nie definiuje własnych sygnałów.+Qt korzysta z dodatkowego preprocesora ''​[[https://​doc.qt.io/​qt-6/​why-moc.html|moc]]''​. Od Qt5 użycie ''​moc''​ można pominąć, jeśli korzysta się z nowej składni funkcji ''​connect''​ i nie definiuje własnych sygnałów.
 \\ \\
 <​html><​small></​html>​Zarówno ''​uic''​ jak i ''​moc''​ są wywoływane automatycznie przez system budowania qmake. W cmake trzeba włączyć opcje [[https://​cmake.org/​cmake/​help/​latest/​prop_tgt/​AUTOUIC.html|AUTOUIC]] i [[https://​cmake.org/​cmake/​help/​latest/​prop_tgt/​AUTOMOC.html|AUTOMOC]].<​html></​small></​html>​ <​html><​small></​html>​Zarówno ''​uic''​ jak i ''​moc''​ są wywoływane automatycznie przez system budowania qmake. W cmake trzeba włączyć opcje [[https://​cmake.org/​cmake/​help/​latest/​prop_tgt/​AUTOUIC.html|AUTOUIC]] i [[https://​cmake.org/​cmake/​help/​latest/​prop_tgt/​AUTOMOC.html|AUTOMOC]].<​html></​small></​html>​
Linia 162: Linia 163:
 Użycie IP multicast w BSD socket API: [[sk2:​multicast_example]]\\ Użycie IP multicast w BSD socket API: [[sk2:​multicast_example]]\\
 Lista grup mcastowych do których jest zapisany komputer: ''​ip maddr''​ lub ''​netstat -ng''​ lub ''​cat /​proc/​net/​igmp''​ Lista grup mcastowych do których jest zapisany komputer: ''​ip maddr''​ lub ''​netstat -ng''​ lub ''​cat /​proc/​net/​igmp''​
-++++ Użycie programu socat do testowania multicastu: | <code bash>+++++ Użycie programu socat do testowania multicastu: | 
 +Zajęcia w laboratorium:​ 
 +<code bash> 
 +socat UDP-DATAGRAM:​239.0.0.1:​2000,​reuseaddr,​bind=0.0.0.0:​2000,​ip-add-membership=239.0.0.1:​enp0s3 STDIO 
 + 
 +# UDP-DATAGRAM:​239.0.0.1:​2000 → wysyłaj datagramy do podanego adresu (239.0.0.1:​2000) i odbieraj co przyjdzie 
 +# reuseaddr → włącze SO_REUSEADDR;​ pozwala wielu programom na tym samym komputerze używać tego samego portu do mcastu 
 +# ip-add-membership=239.0.0.1:​enp0s3 → dołącza do grupy mcastowej 239.0.0.1 na urządzeniu enp0s3 
 +# bind=0.0.0.0:​2000 → wykonaj bind na podany adres; pod tym adresem będą odbierane datagramy 
 +</​code>​ 
 + 
 +Zajęcia zdalne: 
 +<code bash>
 socat UDP-DATAGRAM:​239.0.0.1:​2000,​reuseaddr,​bind=0.0.0.0:​2000,​ip-add-membership=239.0.0.1:​tap0,​ip-multicast-if=10.0.9.X STDIO socat UDP-DATAGRAM:​239.0.0.1:​2000,​reuseaddr,​bind=0.0.0.0:​2000,​ip-add-membership=239.0.0.1:​tap0,​ip-multicast-if=10.0.9.X STDIO
 +
 # UDP-DATAGRAM:​239.0.0.1:​2000 → wysyłaj datagramy do podanego adresu (239.0.0.1:​2000) i odbieraj co przyjdzie # UDP-DATAGRAM:​239.0.0.1:​2000 → wysyłaj datagramy do podanego adresu (239.0.0.1:​2000) i odbieraj co przyjdzie
 # reuseaddr → włącze SO_REUSEADDR;​ pozwala wielu programom na tym samym komputerze używać tego samego portu do mcastu # reuseaddr → włącze SO_REUSEADDR;​ pozwala wielu programom na tym samym komputerze używać tego samego portu do mcastu
Linia 170: Linia 184:
 # ip-multicast-if=10.0.9.X → nakazuje wysyłać wiadomości do grupy multicastowej z podanego adresu ​ # ip-multicast-if=10.0.9.X → nakazuje wysyłać wiadomości do grupy multicastowej z podanego adresu ​
 </​code>​ </​code>​
 +
 +
 ++++ ++++
 <​html></​small></​html>​ <​html></​small></​html>​
sk2/qt.txt · ostatnio zmienione: 2022/11/28 16:26 przez jkonczak