Jak naprawde pisze się programy w Qt ?

0

Witam,
jak wiadomo w Qt mamy do dyspozycji dwa "sposoby" pisania aplikacji, które nie mają z sobą wiele wspólnego,
jeden sposób to pisanie jej w qt creatorze, po prostu pisząc kod
drugi to tworzenie jej w qt design, po prostu ja rysując

Co ciekawe, jak się coś stworzy w qt creatorze to nie widac tego w qt design i odwrotnie ( wg. totalny bez sens, czemu nie może być tak że jak stworze przycisk to widze go tutaj i tutaj ?). Tak więc pytanie brzmi: Jak się tworzy programy w Qt ? Pierwszym czy drugim sposobem ?

0

Prosiłbym o odpowiedź jak to wygląda, bo bez tej informacji nie wiem jak "ruszyc" Qt.

0

No to masz tak naprawdę dwa zagadnienia do rozważenia:

  1. Jak się pisze aplikacje w Qt. Odpowiedź brzmi .. obydwoma sposobami.
  2. Jak ruszyć. Sugestia to .. od umieszczania elementów GUI w widoku "graficznym". Reszty wtedy łatwiej się nauczysz.
0

To może spytam jeszcze tak:
czy można napisać cały program tylko "kodujac" go ? bez uzywania Qt Design ?

0
Wybitny Samiec napisał(a):

jak wiadomo w Qt mamy do dyspozycji dwa "sposoby" pisania aplikacji, które nie mają z sobą wiele wspólnego,
jeden sposób to pisanie jej w qt creatorze, po prostu pisząc kod
drugi to tworzenie jej w qt design, po prostu ja rysując

W zasadzie to są trzy, bo formularze zapisywane są w plikach xml, które można edytować ręcznie.

Wybitny Samiec napisał(a):

Co ciekawe, jak się coś stworzy w qt creatorze to nie widac tego w qt design i odwrotnie ( wg. totalny bez sens, czemu nie może być tak że jak stworze przycisk to widze go tutaj i tutaj ?).

To nie jest bez sensu, gdyż ma na celu odseparowanie opisu formularzy od logiki.

Wybitny Samiec napisał(a):

Tak więc pytanie brzmi: Jak się tworzy programy w Qt ? Pierwszym czy drugim sposobem ?

Jak komu wygodniej.

0
Wybitny Samiec napisał(a):

To może spytam jeszcze tak:
czy można napisać cały program tylko "kodujac" go ? bez uzywania Qt Design ?

Tak, można napisać program bez użycia definicji GUI w pliku XML co robisz klikając w qtdesigner'ze (układając elementy GUI).

Radzę zacznij od qtdesigner'a. Później zapoznasz się ze sposobem "ręcznym" :-)

0

Chcę zacząć od stworzenia prostej gry ( kolko i krzyzyk), ale już na początku mam problem bo label nie ma możliwości klikania. Nie mam zielonego pojęcia co takiego ma w sobie Qt że jest tak popularny, chwile bawiłem się c++ builderem i jest o wiele bardziej sensowny i logiczny. Nawet wersja 10 letnia którą się bawiłem miała możliwość dodania "akcji" klikniecia na zdjęcie... Na pewno czegoś nie rozumiem, bo nie możliwe żeby tak nielogiczne( z moje punktu widzenia, kod nie zgadza się z designem, nie ma "wolnosci" wyboru -nie da się dodać klikniecia na label, kilka plików .h i .cpp w programie kazdym nawet najprostrzym programie) narzędzie było tak popularne.

0

Czy w tej książce jest wytłumaczone Qt "Od dechy do dechy" ? :
http://helion.pl/ksiazki/c-i-qt-wprowadzenie-do-wzorcow-projektowych-wydanie-ii-alan-ezust-paul-ezust,cppqtw.htm

Muszę to zrozumieć, bo lubie programować ( a Qt jest popularne ), ale to IDE jest dla mnie wyjątkowo nieintuicyjne i nielogiczne : |

1

jak wiadomo w Qt mamy do dyspozycji dwa "sposoby" pisania aplikacji, które nie mają z sobą wiele wspólnego,

Mają więcej wspólnego niż ci się wydaje. Różnica tylko w tym, czy kontrolki w oknie wyklikujesz czy piszesz kod z palca.

jeden sposób to pisanie jej w qt creatorze, po prostu pisząc kod
drugi to tworzenie jej w qt design, po prostu ja rysując

Nie "qt design" tylko Qt Designer, służący do projektowania formatek. Cała funkcjonalność Designera jest wbudowana w Creatora, który oprócz bycia designerem jest pełnoprawnym IDE. Więc twoje przeciwstawienie Qt Designera i Qt Creatora jest trochę chybione, bo Creator ma to co Designer i wiele więcej.

0

Napisze dokładnie o co mi chodzi z tą "niespójnością" i mam nadzieje że jakiś dobry człowiek mi i to wytłumaczy : D

  1. sposób stworzenia przycisku:
    w Qt Designer przeciągam Push Button na Form, przy pomocy sygnałów i slotów ustawiam żeby zamykał on okno.

  2. sposób stworzenia przycisku
    w mainwindow.h dodaje biblioteke QPushButton i:
    QPushButton *button;
    w mainwindow.cpp do konstruktora dodaje:

button = new QPushButton (tr("&Wciśnij mnie ;)"), this);
button->setGeometry(25, 15, 150, 75);
connect(button, SIGNAL(clicked()), qApp, SLOT(quit()));

czyli tworze przycisk i ustawiam żeby zamykał on okno ( swoja droga dlaczego qApp?)

w main.cpp nic nie zmieniam, tylko pokazuje się utworzone okno.

Podsumowanie i problem ( jaki widze ) :
W okienku mam dwa przyciski, jeden stworzony w jeden sposób drugi stworzony w drugi sposób, oba robią to samo ( zamykają okno ).

problem :
w Qt Designer widze jeden przycisk, w kodzie widze jeden przycisk, i jest to dla mnie nie logiczne, że to co jest w kodzie/ co wyswietla sie na Qt Designer nie odpowiada temu co się na prawdę dzieje( tutaj i tutaj brakuje "kompletnego" dzialania programu). Co prawda jest tam :
ui->setupUi(this);

ale w kodzie nie widzę co tam tak na prawde jest.

Wg mnie powinno być tak że jak stworze przycisk w kodzie, to pojawia się on w Qt Designer, a jak stworze przycisk w Qt Designer to automatycznie tworzy się kod odpowiedzialny za przycisk. Czy to by nie było logiczne ? Mam nadzieje że ktoś mi pomoże wskazać mój błąd w rozumowaniu : )

3

Ludzie piszą tak jak potrafią. Jedni wolą klikać inni wolą kodować.
Z mojej obserwacji większość tych preferencji wynika z braku skilla na ten drugi temat.
Prawda jest taka, że standardowy UI się "klika" bo jest szybciej i niezwodzonej, a wszelkie udziwnienia się koduje.
Qt bardzo dba o wsteczną kompatybilność i nie am takich niespodzianek jak w iOS lub Android, że "wyklikany" widok w nowej wersji się rozjeżdża. Na platformach mobilnych wiele ludzi woli właśnie z tego powodu kodować a nie klikać.

Do tego jeszcze doszła trzecia bardzo fajna możliwość qml (aka Qt Quick).

0

Wszystko zależy też od tego co jest dostarczane razem z IDE. W takim QtCreatorze / Designerze wolę wyklikać sobie GUI, bo jest to wygodne. IDE dostarcza wygodny designer gdzie bardzo ładnie i intuicyjnie można wszystko pospinać, pozycjonować i ustawiać. W takim WPF w VS2015 wolę np pisać GUI ręcznie w XAML. Mam wtedy większą kontrolę nad tym co gdzie siedzi i w jakiej pozycji, bo dla mnie np. pozycjonowanie kontrolek przez designer w VS dla WPF to katorga. Pomijam oczywiście jakieś dodatkowe narzędzia do VS jak jakieś np. Blendy etc....

A czy jest coś złego w wyklikaniu sobie GUI? Nie. Jak są do tego dobre narzędzia to czemu tego nie robić? Ja robię tak, że w Qt GUI sobie klikam, a sygnały i sloty koduję sam. Jest mi tak wygodniej.

1

Wg mnie powinno być tak że jak stworze przycisk w kodzie, to pojawia się on w Qt Designer, a jak stworze przycisk w Qt Designer to automatycznie tworzy się kod odpowiedzialny za przycisk.

Niektóre IDE tak próbują robić, ale wtedy ten kod (jego część generowana na podstawie formy) musi wyglądać ściśle według schematu. Drobna modyfikacja i już designer nie wie co wyświetlić. Bo co miałby wyświetlić jeśli tworzenie przycisku umieścisz pod warunkiem (if) albo w pętli (for)? W ogólnym przypadku jest to niewykonalne choćbyś nie wiem jak kombinował (problem stopu).

0

Proszę, zerknij do chociaż kilku początkowych filmów tego człowieka
Tłumaczenie Ci w tej chwili takich zagadnień będzie zwykłą stratą czasu.
Tu masz listę filmów

Ogólnie, w kilku (moim zdaniem) drobnych/średnich miejscach popełnił błędy, ale ogólny szacunek za tak obszerne potraktowanie tematu. Ten nie popełnia błędów kto nic nie robi :-)

0

Tak zrobię : ), dziękuję wszystkim za pomoc : )

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