logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[QT][Windows] - pytanie totalnie początkującego - jak zacząć

mirekk36 15 Wrz 2011 23:44 9535 27
REKLAMA
  • #1 9931602
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    Próbuję zabrać się i postawić pierwsze kroki w QT. Pobrałem najnowszą wersję z jakimiś kreatorami i nie wiadomo co. Mnóstwo przykładowych aplikacji itp...

    Ale wyobraźcie sobie, że próbuje się za to zabrać osoba, która dotąd znała tylko biedny Pascal/Delphi.

    QT to całkiem inny świat. Załóżmy że interesuje mnie tworzenie tylko aplikacji okienkowych i tylko pod windows. Chciałbym utworzyć pierwszy taki program przykładowy. Ok umiem już utworzyć pusty projekt, włączyć edytor formy i dodać do niej jakiś widżet (tak to się tu nazywa) BUTTON.

    Kurka wodna i teraz chciałbym żeby np ten klawisz po kliknięciu zamknął mi aplikację.

    A inny żeby mi np zmienił napis jakiegoś tam pola tekstowego.

    Czuję się jakbym wylądował na marsie, nie wiem co kliknąć, gdzie dopisać kod a już w ogóle jak powiązać ze sobą hmm zdarzenia.

    No właśnie - w Delphi było bardzo oczywiste - miałem jakiś komponent/widżet - i miałem inspektor obiektu, w którym widziałem jego proprtiesy (tu chyba też takie coś widzę) ..... i miałem jego możliwe zdarzenia, które po kliknięciu mogłem oprogramować.

    A tu???? o co tu chodzi ? - widzę i słyszę o jakichś sygnałach, slotach, układaczach - normalnie wszystko na głowie jak dla mnie (przynajmniej narazie).

    Czy ktoś jakoś umiałby pomóc wystartować - żeby chociaż te pierwsze niemowlęce kroki postawić a potem może jakoś pójdzie ?
  • REKLAMA
  • Pomocny post
    #2 9931837
    wiesniak
    Poziom 31  
    Posty: 1006
    Pomógł: 231
    Ocena: 52
    Pamiętam, że QT Creator pozwalał na przypięcie jakiegoś zdarzenia z widgetu do metody, ale niestety nie pamiętam, gdzie się to klikało, a nie mam QT pod ręką by sprawdzić.
    Spójrz na dokumentację QT - tu http://doc.qt.nokia.com/4.7/gettingstartedqt.html znajdziesz opisane proste przykłady malutkich programów. Jeśli spojrzysz w kod, zauważysz, że zdarzenia są łączone z metodami / funkcjami poprzez metodę "connect". Podajesz tam obiekt, z którego jest zdarzenie, nazwę zdarzenia oraz funkcję / metodę, którą wywołać po wystąpieniu danego zdarzenia.
  • REKLAMA
  • Pomocny post
    #3 9932012
    kotlar
    Poziom 13  
    Posty: 124
    Pomógł: 4
    Ocena: 5
    Spokojnie w QT też wszystko jest proste i intuicyjne trzeba tylko poznać podstawy.
    Dokumentacja to podstawa. QT akurat ma bardzo dobra dokumentacje i musisz nauczyć się z niej korzystać:)
    Na początek proponuje jakiś przykładowy wy googlowany kurs sobie przerobić
    http://blog.matthew.org.pl/kategoria/programowanie/qt/

    A potem pytaj:)
    Rozumiem że C++(dziedziczenie, funkcje wirtualne itp) masz opanowane.
    Pozdro
  • Pomocny post
    #4 9934359
    lolcio
    Poziom 16  
    Posty: 133
    Pomógł: 29
    Ocena: 8
    Nie używaj qt designera! Najpierw naucz się jak działaja sloty..jak ręcznie wpisać buttona. Jak to zrozumiesz porządnie to wtedy możesz sobie ułatwić życie przeciagając myszką odpowiednie elementy okna... Utwórz sobie nowy projekt w qt creatorze i przanalizuj poniższy przykład który CI napisałem...spróbuj dorobić drugi przycisk który zmienia napis w pierwszym buttonie ;)
    Główna klasa:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Plik cpp do tej klasy:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Po kliknieciu na buttona wykona się funkcja Foo ( jest ona slotem polaczonym connectem z buttonem, ktory jest nadawca sygnalu). Sygnały i sloty to podstawa qt...jedno wysyła sygnał, a drugie się ma wykonać jak się wydarzy ten sygnał. Przeanalizuj funkcje connect...
  • REKLAMA
  • #5 9934773
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    lolcio - o taką wskazówkę chyba mi najbardziej chodzi - bardzo dziękuję - tylko (sorki za pytanie) - ale jaki projekt utworzyć, tzn którą opcję wybrać bo jest ich sporo do wyboru, i dla kogoś, kto w tym siedzi to w zasadzie nawet przez myśl nie przejdzie żeby się nad tym zastanowić.


    kotlar --> no właśnie takie podstawy języka C++ narazie znam teoretycznie na podstawie książki "Symfonia C++" - teraz chcę zacząć to w praktyce - tylko strasznie ciężko mi te początki przejść.

    kolega lolcio - chyba podał mi teraz najbardziej i nawięcej mówiący i to własny przykład - to dopiero do mnie dociera - tylko jeszcze który z tych projektów wybrać.

    Bo gdy kliknę nowy to trzeba coś wybrać - ale co ?
  • Pomocny post
    #6 9934791
    lolcio
    Poziom 16  
    Posty: 133
    Pomógł: 29
    Ocena: 8
    Qt widget project -> Qt GUI application...A potem dajesz nazwe i klikasz dalej, dalej do oporu :P
    To jest taka typowa aplikacja dla desktopów :)
  • #7 9934871
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    lolcio --> hmm wcześniej próbowałem tego zanim napisałeś ale okazuje się, że po utworzeniu projektu mój plik mainwindows.h wygląda tak:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    czyli mam jeszcze jakiś UI - nie wiem za bardzo co to - (User Interface?)
    podobnie inaczej wygląda plik cpp

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Tzn teraz udało mi się do tego dopisać twój kod - WIELKIE dzięki bo już zaczynam czuć przynajmniej podstawy podstaw slotów i sygnałów, tyle że nic mi się w tej funkcji foo nie wyświetlało nigdzie :( ... dopiero jak zrobiłem w funkcji kod

    m_button->setText("ala i as");

    to udało się zauważyć jej działanie prawidłowe

    czuję że coś ma z tym wspólnego ten UI, że typowy cout nie zadziałał
  • Pomocny post
    #8 9935003
    lolcio
    Poziom 16  
    Posty: 133
    Pomógł: 29
    Ocena: 8
    Wyświetlałem w funkcji Foo cout-em i to powinno się pokazywać to w panelu dolnym qt creatora, a nawet musi się pokazać ( tam gdzie błedy kompilacji... ) tylko że cout pokaże się po zakończeniu aplikacji, a cerr w trakcie działania..ale to taka drobna uwaga ) UI to jest formularz qt designera, czyli włączasz do kodu to co w qt designerze wyklikałeś mychą, wszystkie buttony itd. Wywaliłem to żeby CI nie zaśmiecało :) Nie ma to żadnego związku z cout którego poprostu nie zauważyłeś że się tam wyświetlił :P . Buttona można też było dodać przez te ui, przeciagając i puszczając poprostu, ale to będziesz potem robić, jak już poznasz poddstawy :)
  • #9 9935010
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    lolcio --> w panelu dolnym, po wyjściu z aplikacji mam tylko wyświetlony komunikat:

    "aplikacja" exited with code 0

    natomiast nic się nie pojawia to co było coutem zrobione (to tak z ciekawości już pytam)

    a drugie pytanko to jak to jest - bo piszesz że włącza się do kodu wszystko to co się mychą wyklikało. Czyli co ? jeśli postawiłem sobie na tej formatce drugiego buttona a nie tworzę go w kodzie - to inicjalizacja tego buttona nie robi się automatycznie w kodzie (tak jak miałem to w Delphi ???? tam jak postawię button na formatkę, to gdy się przełączę do kodu - to widzę jego deklarację) - a tu trzeba samemu to jakoś pododawać później ? (a jeśli tak? to jak mniej więcej?)

    sorki za te proste pytania - ale twoje cierpliwe odpowiedzi dużo mi pomagają na tym marsie (QT) ;)
  • Pomocny post
    #10 9935462
    beluosus
    Poziom 25  
    Posty: 362
    Pomógł: 123
    Ocena: 18
    Jeśli korzystasz z designera i "wyklikujesz" GUI to wszystko robi się automagicznie. Pamiętaj żeby nie mieszać tworzenia formatki poprzez designera i tworzenia formatki poprzez kod - chyba że robisz to z zamierzeniem i całkowicie świadomie. W kreatorze projektu odznacz tworzenia pliku UI. Kod, który pokazał @lolcio najlepiej wklej do tak utworzonego projektu (przy czym usuń #include "ui_mainwindow.h"). Jeśli chcesz korzystać z UI to lepiej zostaw kod taki jaki Ci wygeneruje środowisko. Ja zazwyczaj tworzę pusty projekt, dodaję main.cpp, a później sam tworzę klasę okna głównego. Jeśli chcesz wyświetlać tekst w panelu dolnym to najlepiej do tego nadaje się qDebug():
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Dodam jeszcze, że dopóki nie opanujesz dziedziczenia i klas/metod wirtualnych to będzie Ci ciężko nauczyć się czegoś więcej niż podstaw Qt. Po prostu znajomość Qt w dużym stopniu jest ograniczana znajomością języka C++.

    PS
    Na miłość bogów... Qt
    NIE QT (QuickTime).
  • #11 9935531
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    beluosus --> bardzo dziękuję za wyjaśnienia. Dużo mi to znowu pomogło. Ale teraz pytanie kolejne ponieważ widziałem już kilka filmików na youtube z poradami jak korzystać z tego designera formatek. Genrealnie fajnie to wygląda i szybko można zrobić sobie jakiś prosty program ale...

    ale jak to jest w waszej praktyce ??? czy w ogóle nie korzystacie z z designera formatek ??? na rzecz tworzenia wszystkiego w kodzie programu ???? (tu dla mnie duże zdziwienie - bo jak można tak programowo rozplanować nieraz dosyć rozbudowany interfejsik użytkownika - a ja lubię robić dobre (przynajmniej wg mnie dobre) interfejsy - z jakimiś ikonkami, obrazkami , kolorami itp ....

    No i ew jeszcze jedno - jeśli już jednak postawię sobie takiego buttona w tym designerze formatek, i chciałbym aby po kliknięciu wczytała mi się zawartość gdzieś tam jakiegoś pliku XML to:

    1. tworzę z poradami wyżej własną funkcję jako SLOT
    2. podłączam ją w tym designerze za pomocą graficznego przeciągania strzałek do sygnału clicked()

    ????

    Czy ta moja funkcja się pojawi po zdeklarowaniu jako publiczny slot w tym graficznym interfejsie jako gotowa do połączenia z onclickiem() ???

    A jeśli chodzi o dziedziczenie klas/metod virtualnych - to tak jak pisałem, na razie mam to na świeżo w jakiejś tam teorii w głowie - ale ciężko nauczyć się z samej teorii bez właśnie prób połączenia tego z praktyką....

    Na razie wszystko tu jest dla mnie nowe - no ale postanowiłem, że jeśli nie za Visual C++ to może za QT się wezmę, polecało mi to wiele osób z elektrody.
  • Pomocny post
    #12 9937133
    lolcio
    Poziom 16  
    Posty: 133
    Pomógł: 29
    Ocena: 8
    Ja na początku sporo posiedziałem nad tym żeby zrozumieć i poznać Qt, dopiero potem przeszedłem na designera, aby przyśpieszyć prace... W załączniku masz jeden z moich pierwszych projektów- słównik z przeglądarka i możliwośćia nauki, bez formularzy. A drugi program to proste środowisko programistyczne, z formularzami..napewno sporo błedów jest w tych kodach jeżeli chodzi o projektowanie, ale masz dużo komentarzy po polsku, tak że sądze że powinieneś podpatrzyć sporo rzeczy...Oba programy powinny działać (przynajniej na linuxie :P ) W tym drugi programie (24-04-11 ) masz kilka formularzy designera, poprzez który zrobiłem sobie interfejs..można powiedzieć że rozbudowany :)

    Co do dziedziczenia...w Qt trzeba to często nawet robić, w moich programach znajdziesz kilka klas, które dziedziczą po klasach z Qt...jest na porządku dziennym.

    Jeżli chodzi o sloty i elementy dodane przez designera, to masz w designerze takie coś jak signal & slot editor...taki mały pasek na dole, tam możesz łączyć buttony z funkcjami (Niekoniecznie swoimi, możesz też wywoływać te z klas Qt ;) )
    Załączniki:
    • 24-04-11.rar (109.15 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • POLIGLOT-src.rar (629.84 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • Pomocny post
    #13 9959586
    gbd.reg
    Poziom 21  
    Posty: 529
    Pomógł: 3
    Ocena: 45
    No i ja podam Ci kilka pomocnych wskazówek :)

    Nie wiem jaką wersję Qt Creatora posiadasz, więc opiszę wszystko w miarę uniwersalnie.

    Po pierwsze: przyzwyczaj się do Qt Creatora, gdyż jest dosyć nietypowym IDE ;) brak pasków narzędziowych, dużo dziwnych skrótów klawiaturowych, ale muszę przyznać że wszystko jest naprawdę dobrze pomyślane i gdy się człowiek do tego przyzwyczai to już żyć bez tego nie może :D

    Druga sprawa: niezbędna jest tu wiedza o obiektowości i elementarna wiedza o C++. Korzystałeś z delphi, więc zjawisko obiektowości nie powinno być dla Ciebie obce, a składnia C++ jest łatwo przyswajalna. Spróbuj jednak najpierw napisać kilka prostych aplikacji w czystym Qt - porównałbym to do migania diodkami na mikrokontrolerach ;) co często na forum początkującym polecasz.

    Trzecia sprawa, Qt designer: Zanim zaczniesz z niego korzystać łyknij Qt bez tego. Przy tworzeniu projektu odznacz tworzenie formularza (UI, GUI, różnie to może w różnych wersjach Qt być nazwane) i wklepuj wszystkie elementy GUI w kodzie. Wszystkie elementy GUI w Qt się ładnie sklejają i są łatwo konfigurowalne, więc trudne to nie jest i chwilka zabawy z tym wystarczy, żeby stworzyć interfejs taki, jaki chcesz żeby był, nawet nie widząc efektów tworzenia w rzeczywistości :) Mam nadzieję, że zrozumiale to napisałem... Do Designera możesz przejść gdy już łykniesz tworzenie GUI i zobaczysz jak to wszystko w Qt wygląda.

    Czwarta sprawa: sygnały i sloty. Porównałbym to do przerwań w mikrokontrolerach, ale dużo bardziej rozbudowanych. Opiera się na tym całe Qt, więc aby dobrze Qt używać to trzeba to opanować. Spróbuj zrobić prostą aplikację z kilkoma elementami GUI (jakimś polem wpisania tekstu, polem wybolu, checkboxem i przyciskiem) i przydziel temu jakąś funkcję, aby po wciśnięciu przycisku pokazało się coś, co będzie zależne od wprowadzonych danych (chociażby komunikat zawierający wszystkie te dane :))

    Rzuciłeś się trochę na głęboką wodę z tym Qt, ja na Twoim miejscu zrobiłbym najpierw kilka konsolowych aplikacji w C++ żeby oswoić się z samym językiem. Miejmy nadzieję, że się nie zrazisz :) Do samego Qt polecam kurs, do którego link już ktoś zamieścił: link. Po przejściu od początku do końca będziesz miał podstawy umożliwiające tworzenie własnych aplikacji GUI :)
  • #14 9960738
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    No dobrze, bardzo dziękuję za garść kolejnych cennych wskazówek. Ale jednak dla mnie pisanie aplikacji konsolowych na początek to totalna porażka. Ja nigdy nie posługuję się aplikacjami konsolowymi, więc nawet do czego mógłbym je zastosować. A wymyślanie na siłę jakichś przykładów z kosmosu nic mi nie da. Wolę od razu na konkretnych przykładach tego co mi potrzebne ćwiczyć. No i znalazłem w hepie QT taki fajny przykładzik, który mi odpowiada TEXTFINDER

    zrobiłem dokładnie krok po kroku to co w helpie i w końcu w głowie dużo jaśniej ale...

    ale jest tam taki fragment kodu w samej funkcji ładującej tekst do pola tekstowego z pliku.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    ok wszystko fajnie - i rozumiem jak działa.

    Ale pytanie - skąd wy bierzecie/czerpiecie informacje na szybko jak użyć jakiejś klasy do czegoś tam. No tu z przykładu widzę już jak wczytać coś z pliku do strumienia i z niego do stringa a potem od razu do widgetu....

    Ale jak mam nowy pomysł - chciałbym dodać np możliwość żeby otworzyło mi się okienko z wyborem plików z dysku, żebym mógł ustalić, że mają być brane pod uwagę np tylko pliki *.txt oraz *.cfg

    To jak? gdzie? pod jaką nazwą? i jaką drogą szukać takiej informacji skoro nie znam w ogóle tych nazw klas itd....

    Nie chodzi mi o to żebyście mi tu podpowiedzieli: zrób to, kliknij tamto i gotowe.

    Tylko jak się za to zabrać? czy w jakimś helpie szukać ? ale wg jakiego klucza - no nie mam pojęcia. Jest wprawdzie Menu kontekstowe ale takie zgadywanie nazw i to jeszcze kojarzących mi się z Delphi nic nie daje.

    Np w Delphi nazywał się taki komponencik "OpenDialog" więc i nazwa samo mówiąca za siebie .... a tu jaką drogą dojść co zrobić żeby taki efekt uzyskać w tym prostym programie - jako kolejny krok własnego rozwoju ???? ;)

    Dodano po 9 [minuty]:

    OK - sorki - dobra już sobie znalazłem na to odpowiedź - poszukałem trochę w googlu i znalazłem coś i zrobiłem sobie tak

    Kod: C#
    Zaloguj się, aby zobaczyć kod


    i działa ;)

    czyli idzie małymi kroczkami do przodu
  • Pomocny post
    #15 9960774
    gbd.reg
    Poziom 21  
    Posty: 529
    Pomógł: 3
    Ocena: 45
    No z tym bywają problemy... Sam miałem trochę problemów ze znalezieniem odpowiedniej klasy do wykonania tego, czy tamtego. Czasem trzeba trochę pogooglować, a czasem wystarczy dokumentacja Qt :) Szukamy więc czegoś na wzór OpenDialog z delphi, spróbujmy w wyszukiwarkę dokumentacji wpisać "OpenDialog" :) No niezbyt o to nam chodziło, więc spróbujmy "Open Dialog" i widzimy wynik: QFileDialog Class Reference, czyli chyba jesteśmy na dobrej drodze :) Przy pełnym opisie klasy mamy przykłady użyć :)

    A! zapomniałbym o opisaniu funkcji tr, która jest składnikiem każdej klasy dziedziczącej z QObject (czyli każdej należącej do Qt :)). Jest to funkcja umożliwiająca tłumaczenie, ale nie tylko. Można tworzyć za pomocą niej skróty klawiszowe (i definiować skróty dla danego języka) oraz można spotkać ją w QFileDialog jako filtr typów plików ;) Warto dowiedzieć się jak najwięcej o niej.
  • #16 9960781
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    No właśnie już znalazłem sam w googlu i się zacieszyłem - zobacz wyżej że zdążyłem doszukać. Teraz już widzę światełko w tunelu i wiem jak iść dalej. Wielkie dzięki za takie wyjaśnienia....

    Jak coś jeszcze będę miał to pozwolę się tu dopytać.
  • #18 9963913
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    uzi18 napisał:
    no to pokaz moze nam jak aktualnie Twoj program wyglada - to moze cos jeszcze podpowiemy?


    Chętnie, w załączniku cały projekt. Są dwa klawisze, jeden wczytuje mi już plik tekstowy w którym mam wartości HEX rozdzielone przecinkami. Teraz drugim klawiszem chciałbym jakoś posprawdzać po kolei te wartości HEX , zamienić je na wartość BIN i bajt po bajcie zapisać do nowego pliku z taką samą nazwą plus rozszerzenie BIN, tyle że będzie to już plik binarny. W sumie proste .... ale znowu - kompletnie nawet nie wiem od czego zacząć żeby doszukać się sposobu jak pobierać te wartości linia po linii i analizować hex pomiędzy przecinkami. Tzn wiadomo - muszę sobie napisać funkcję, która będzie mi przerabiać ten cały łańcuch tekstowy (string) ... ale kurczę jak tu jakieś metody dobrać eeeh no czarna magia :(

    A nie wspomnę o tym, że nawet tak głupiego problemu jak to, żeby mi się okienko programu centrowało na środku ekranu nie mogę wygoglować.

    w pliku spakowanym dałem też jakiś przykładowy plik który chcę konwertować
    Załączniki:
    • test1.zip (11.43 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • Pomocny post
    #19 9964358
    beluosus
    Poziom 25  
    Posty: 362
    Pomógł: 123
    Ocena: 18
    Są wydajniejsze sposoby, ale np. tak:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Btw do wczytywania niepotrzebnie używasz QTextStream, QFile ma metodę readAll(). Wyśrodkowanie okienka (w konstruktorze, po setupUi):
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #20 9964387
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    beluosus --> O Matko! ;) wielkie dzięki - troszkę jeszcze mało rozumiem, tzn nie wszystkich poleceń ale spokojnie zaraz przeanalizuję i doczytam.

    eeeh dużo czytania i szukania przede mną - ale chyba się opłaci - jeśli sił mi wystarczy ;)
  • #21 9964497
    uzi18
    Poziom 24  
    Posty: 751
    Pomógł: 37
    Ocena: 81
    @beluosus: QString ma gotowa metode split z QRegExp, petla wtedy mozna zapisac prosciej.
    Moze by taj na poczatek bez QRegExp? ;) Sam plik ma prosta budowe ...

    Zastanowic by sie trzeba czy nie prosciej byloby od razu w Qt zrobic konwersji obrazkow do rgb?

    Plik laduje sie wtedy do obiektu QImage metoda load().
    Metoda scaled pomoze Ci zmienic rozmiar.
    a save jesli podasz typ QImage::Format_RGB888 lub inny http://doc.qt.nokia.com/latest/qimage.html#Format-enum

    Zakladajac ze chodzi Ci wlasnie o konwersje obrazow ;)

    ... (chwila pozniej) ...

    Dopiero teraz zauwazylem ze chodzi o te Twoje fonty ;)

    QFile ma tez metode readLine(bufor, sizeof(bufor)), mozesz z niej skorzystac i z kazdej linijki wycinac potrzebne Ci dane zamiast ladowac wszystko na raz do okna.
    Najprosciej: usuwasz w linijce spacje i znaki specjalne (sa na to gotowe metody), dzielisz miedzy przecinkami i na kazdym qstring-u uzywasz metody toInt poniewaz sa to ciagi rozpoczynajace sie od "0x" qt automatycznie wie ze to hex i mozna pominac parametr 16.

    Drog do celu jest wiele. Sama konwersja da sie zapisac w ok. 2-3 linjkach.
    Wazne aby kod byl jasny i przejrzysty.

    Czekamy na odp. i zachecam do zabawy z Qt
  • #22 9972738
    gbd.reg
    Poziom 21  
    Posty: 529
    Pomógł: 3
    Ocena: 45
    Piszesz Mirku, że nie widzisz zastosowania dla aplikacji konsolowych, a ja choćby do tych fontów widzę ładną konsolową aplikację, prostszą w obsłudze nawet niż aplikacja GUI :) otóż: przeciągasz pliczek z fontami na właśnie naszą aplikację konsolową, ona go konwertuje i "wypluwa" wynik w formie pliczku o tej samej nazwie tylko innym rozszerzeniu :) Jeśli nie przeciągniemy pliczku tylko uruchomimy aplikację normalnie to dostajemy info iż można zrobić to przez przeciągnięcie pliku na ikonę, albo możemy wpisać ręcznie ścieżkę do pliku. Niby nie mamy ładnego okna wyboru pliku, ale możemy zrobić to równie szybko, a nawet szybciej :) Jakby ktoś nie wiedział, przeciągnięcie pliku na ikonę aplikacji daje ten sam efekt co uruchomienie programu przez konsolę w ten sposób:
    program "c:\ścieżka\do\pliku.hex"
    czyli ścieżkę otrzymujemy w zmiennej argv :) (o ile ktoś tak nazwał ją w main :) )
  • #23 9972895
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Wiem wiem, z tego dobrze zdaję sobie sprawę i często wykorzystuję takie możliwości odpalania programów przez przeciąganie czegoś nie tylko na ikonę programu ale równie dobrze wprost do otwartego okienka programu albo jakichś jego części (Drag&Drop)....

    Ja nie chciałem powiedzieć, że aplikacje konsolowe są złe. To po prostu może ja jestem skrzywiony że ich nie lubię. A że dla mnie tworzenie interfejsu użytkownika to sama przyjemność i nigdy na to nie narzekam gdy tworzę swoje programy to tak jakoś wyszło. Przyzwyczaiłem się do tego i skoro mogę mieć jednak te ładne okienka razem z możliwościami tego co bym dostał w zwykłej konsoli - to wolę to drugie - czyli okienka.

    No ale z QT jeszcze strasznie dużo nauki przede mną - nie mniej jednak coraz ciekawiej to wygląda - nawet jeśli nie rozumiem jeszcze wielu rzeczy.
  • #25 9980595
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    biolkell napisał:
    Jeżeli znasz angielski, to polecam ten tutorial sam się z niego uczę :)
    http://www.voidrealms.com/tutorials.aspx?filter=qt


    Noooo to jest to o co mi chodziło ;) Bardzo wielkie dzięki. Już po kilku pierwszych lekcjach wyjaśniło mi się tyle ile przedtem szukałem i szperałem przez kilka tygodni.
  • #26 9983833
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    hmm wymyśliłem sobie całkiem nowe zadanie - załadować na formę jakiś głupi obrazek np z JPG'a.

    w tym celu w pliku mainwindow.h zdeklarowałem zgodnie z jakimś tutorialem

    QGraphicsScene * scene;

    potem w *.cpp

    scene = new QGraphicsScene(this);
    ui->graphicsView->setScene(scene);

    QPixmap pixmap("u:\film-clock.jpg");

    scene->addPixmap(pixmap);

    i kiszka - nic nie widać obrazka .... a w helpie są opisane setki tysiące metod, za to żadnego przykładu jak zrobić tak prostą rzecz. W necie też można znaleźć same jakieś przykłady zaraz z jakimś tam OpenGL'em .... a tak durnej sprawy nie ma jak znaleźć :(

    chodzi o to, że chciałem na górze formy zrobić sobie pasek z jakimś obrazkiem i tekstem - taki ala mini baner formy, zamiast gołego okienka....

    i jak tu dalej coś zrobić ?
  • Pomocny post
    #27 9995291
    directx11
    Poziom 17  
    Posty: 250
    Pomógł: 25
    Ocena: 14
    Kod: text
    Zaloguj się, aby zobaczyć kod


    O to pewnie chodzi:

    Kod: text
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

✨ Użytkownik stara się rozpocząć pracę z frameworkiem Qt, mając jedynie podstawową wiedzę z języka Pascal/Delphi. Zadaje pytania dotyczące tworzenia aplikacji okienkowych w Qt, w tym jak powiązać zdarzenia z widgetami, jak korzystać z Qt Creator oraz jak używać Qt Designer. Otrzymuje porady dotyczące korzystania z dokumentacji Qt, tworzenia projektów oraz implementacji slotów i sygnałów. Użytkownicy dzielą się przykładami kodu oraz wskazówkami, jak efektywnie korzystać z Qt, w tym jak dodawać przyciski i obsługiwać zdarzenia. Pojawiają się również pytania o różnice między tworzeniem GUI w Qt a Delphi oraz o metody wczytywania plików i konwersji danych.
Wygenerowane przez model językowy.
REKLAMA