Qt - exe po kompilacji

0

Witam, miałem zamiar sprobować swoich sił w Qt, ale na początek mam pytanie: czy w Qt Constructor można skompilować aplikację do *.exe tak jak w Delphi? - tzn czy wszystkie potrzebne składniki Qt (dll, widgety i takie tam) są zawarte w jednym .exe bez potrzeby udostępniania (instalowania) innym użytkownikom części pakietu Qt?
Dzięki za wszelkie odpowiedzi.

0

Biblioteki są ładowane osobno, czyli masz EXE a obok tego wymagana pliki DLL. I nie narzekaj na to, bo dzięki temu nie musisz za każdym razem linkować kilkudziesiąciu MB kodu. Łączenie tego wszystkiego w EXE ma mały sens.

0

Dzięki, tak myślałem.
Jeden plik exe ma dla mnie sens bo piszę mało skomplikowane programy użyteczne dla znajomych: jeden plik = prostota użycia (np choć by z Pendrive'a bez ingerencji w rejesrt, bez żadnych instalek. Odpalasz i jedziesz ...). Czyli do skompilowanego exe trzeba dołączyć wszystko z Qt z czego kożysta aplikacjia lub instalować Qt na innym kompie?

0

Tak, ale niekoniecznie. Można zlinkować statycznie, ale plik urośnie dość ostro. Oraz musisz wtedy udostępnić na licencji LGPL lub GPL.

0

Tutaj masz opis jak skonsolidować wszystko statycznie :
http://bexlab.pl/linkowanie-statyczne-qt-sdk-for-windows/132/
oraz
http://blog.lugru.com/2009/03/qt-static-mingwm10dll-and-deployment-under-windows-environment/

Aby zmniejszyć rozmiar pliku EXE polecam program UPX
http://upx.sourceforge.net/

Pozdrawiam! :)

0

nie ma sensu linkować tego statycznie. Najlepiej zrób instalator, który zainstaluje wszystkie DLLe bezpośrednio w C:/Windows/system32, czy gdzie to się tam teraz wsadza.
ja zawsze wolałem uploadować 1MB, niż 6MB (tyle około zajmują biblioteki po potraktowaniu ich lzma).

Nokia mogłaby pomyśleć nad "dystrybucją" Qt jako "dużego frameworka", podobnie jak jest z samym .NETem, VC, czy kiedyś z GTK.

0

Dzięki za te info. Pobrałem i zainstalowałem to cacko Qt...
Bawiąc się standardowymi kontrolkami śmigało ok, ale po dodaniu do formatki QWebView nie chce się skompilować.
Przy próbie budowania daje jakiś błąd : " error: collect2: ld returned 1 exit status". Próbowałem w helpie znaleźć info na ten error, ale nie ma takiego tematu.
Co mogłem skopać?
(problem powstał zaraz po dodaniu WebView na formatkę, bez żadnych manipulacji w ustawieniach ani w kodzie z mojej strony)
Zainteresowanym z góry dzięki za sugestie.
Pozdrawiam.

1

do pliku .pro musisz dopisać:
QT +=webkit
QWebView jest widgetem (tak to się nazywa w Qt, nie "kontrolka") niebędącym w standardowej bibliotece, bo jest zbyt ciężki. Musisz jeszcze dodać QWebKit4.dll, czy jakoś tak.

0

Ok, działa.
Sorry że zawracam gitarę, ale... jak zrobić żeby komponent zmieniał rozmiar razem z formatką? Jest cos takiego w Qt jak delphi-owskie Anchors?
Bawiłem się w Qt : sizePolicy, ale nie daje to efektów.

0

stosuj Layouty i sizePolicy. Zaznacz główny widget ("tło") i naciśnij na górze np. GridLayout. Poukłada wszystkie widgety do tabeli.

0

Dzięki wielkie, nowe śrdowisko - to człowiek jak dziecko we mgle...
Żeby nie zanudzać - ostatnia prośba:
Mam tabWidget, jak dynamicznie dodać nowy tab chyba wiem, jak na ten tab położyć QWebView chyba też, ale jak się potem odwołać do takiego webView'a leżącego na aktywym tabie?
Próbowałem coś takiego ale to chyba kompletna bzdura:

   int id = ui->tabWidget->indexOf(ui->webView_2);
//... i tu dynamicznie znaleźć odpowiedni webView i załadować urla
   ...webView->load(QUrl(ui->lineEdit->text()));
 

Z góry dziękuję i pozdrawiam.

0

O ile pamiętam to QTabWidget przechowuje wskaźniki do QWidget. Jak wsadzisz do niego QWebView, który dziedziczy po QWidget, to też pobierzesz typ QWidget, ale możesz go rzutować do QWebView. Aktywny widget pobierasz metodą currentWidget:
http://doc.qt.nokia.com/4.7/qtabwidget.html#currentWidget

QWebView *web=(QWebWidget*)(ui->tabWidget->currentWidget());

No i masz tego QWebView :)

Warunek tylko taki, że MUSISZ być pewny że to QWebView. Ale jak trzymasz tam tylko taki typ, to nie będzie problemu

0

@autor radziłbym zapoznać się z dokumentacją oraz poprzeglądać examples. Na stronie Qt znajduje się również ebook poświęcony Qt w wersji 4.0, który jest pierwszą (i ostatnią darmową) pozycją o Qt. Tam znajdziesz podstawy, o które tutaj pytasz oraz jego "zwyczaje".

0

Podziekował Wam wszyskim serdecznie!
Za wyrozumiałość i cierpliwoś, a przy okazji -> Dosiego Roku!

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