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
sk2:qt [2022/11/28 16:26]
jkonczak [Sieć w Qt]
sk2:qt [2024/11/28 20:13] (aktualna)
jkonczak [Zadania]
Linia 22: Linia 22:
  
 === Narzędzia === === Narzędzia ===
-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).\\+<​small>​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).</​small>​\\
 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.
  
Linia 33: Linia 33:
 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. 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>​+<​small>​Zarówno ''​uic''​ jak i ''​moc''​ są wywoływane automatycznie przez system budowania qmake. 
 +CMake dla Qt6 należy <​html><​a class="​urlextern"​ href="​https://​doc.qt.io/​qt-6/​cmake-get-started.html#​building-a-c-gui-application"></​html>​dodać ''​qt_standard_project_setup()''​ i zamiast ''​add_executable''​ użyć ''​qt_add_executable''<​html></​a></​html>​ (w Qt5 zamiast tego  ​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>​
  
 ===== Sieć w Qt ===== ===== Sieć w Qt =====
Linia 48: Linia 49:
     * metoda ''​[[https://​doc.qt.io/​qt-6/​qtcpserver.html#​nextPendingConnection|nextPendingConnection]]''​ wykonuje ''​accept''​     * metoda ''​[[https://​doc.qt.io/​qt-6/​qtcpserver.html#​nextPendingConnection|nextPendingConnection]]''​ wykonuje ''​accept''​
   * ''​[[https://​doc.qt.io/​qt-6/​qtcpsocket.html|QTcpSocket]]''​ - klasa gniada TCP klienckiego (łączącego się pod podany adres)   * ''​[[https://​doc.qt.io/​qt-6/​qtcpsocket.html|QTcpSocket]]''​ - klasa gniada TCP klienckiego (łączącego się pod podany adres)
-    * sygnały ''​[[https://​doc.qt.io/​qt-6/​qabstractsocket.html#​signals|connected]]''​ i ''​[[https://​doc.qt.io/​qt-6/​qabstractsocket.html#​signals|disconnected]]''​+    * sygnały ''​[[https://​doc.qt.io/​qt-6/​qabstractsocket.html#​signals|connected]]''​ i ''​[[https://​doc.qt.io/​qt-6/​qabstractsocket.html#​signals|disconnected]]''​((Rozłączenie gniazda poza sygnałem ''​disconnected''​ wygeneruje też ''​errorOccured''​ z argumentem ''​RemoteHostClosedError''​.))
     * sygnał ''​[[https://​doc.qt.io/​qt-6/​qabstractsocket.html#​signals|errorOccured]]''​ (Qt w wersji ≥5.15) \\ <​html><​small></​html>​ sygnał ''​[[https://​doc.qt.io/​qt-5.14/​qabstractsocket.html#​signals|error]]''​ (Qt w wersji przed 5.15)(( Uwaga, w nowej składni ''​connect''​ wymagany jest wskaźnik na funkcję, a klasa QTcpSocket ma dwie funkcje ''​error''​. W efekcie potrzebne jest wybranie funkcji przez rzutowanie na właściwy typ  [[https://​wiki.qt.io/​New_Signal_Slot_Syntax#​Asynchronous_made_easier|[1]]] ))<​html></​small></​html>​     * sygnał ''​[[https://​doc.qt.io/​qt-6/​qabstractsocket.html#​signals|errorOccured]]''​ (Qt w wersji ≥5.15) \\ <​html><​small></​html>​ sygnał ''​[[https://​doc.qt.io/​qt-5.14/​qabstractsocket.html#​signals|error]]''​ (Qt w wersji przed 5.15)(( Uwaga, w nowej składni ''​connect''​ wymagany jest wskaźnik na funkcję, a klasa QTcpSocket ma dwie funkcje ''​error''​. W efekcie potrzebne jest wybranie funkcji przez rzutowanie na właściwy typ  [[https://​wiki.qt.io/​New_Signal_Slot_Syntax#​Asynchronous_made_easier|[1]]] ))<​html></​small></​html>​
     * sygnał ''​[[https://​doc.qt.io/​qt-6/​qiodevice.html#​signals|readyRead]]'',​ określający że przyszły nowe dane do odbioru ​     * sygnał ''​[[https://​doc.qt.io/​qt-6/​qiodevice.html#​signals|readyRead]]'',​ określający że przyszły nowe dane do odbioru ​
Linia 171: Linia 172:
 # 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
-# ip-add-membership=239.0.0.1:​enp0s3 ​→ dołącza do grupy mcastowej 239.0.0.1 na urządzeniu ​enp0s3+# ip-add-membership=239.0.0.1:​br0 → dołącza do grupy mcastowej 239.0.0.1 na urządzeniu ​br0
 # bind=0.0.0.0:​2000 → wykonaj bind na podany adres; pod tym adresem będą odbierane datagramy # bind=0.0.0.0:​2000 → wykonaj bind na podany adres; pod tym adresem będą odbierane datagramy
 </​code>​ </​code>​
sk2/qt.1669649178.txt.gz · ostatnio zmienione: 2022/11/28 16:26 przez jkonczak