[C++] Tworzenie aplikacji okienkowej


(The Wampir96) #1

Witam.

 

Od jakiegoś czasu zacząłem naukę C++, korzystając przy tym z książki Jerzego Grębosza "Symfonia C++ Standard". Póki co jestem z niej zadowolony, mimo że nie przeczytałem jej jeszcze do końca to z miejsca mogę ją polecić innym początkującym.

-(Używam środowiska Visual Studio C++ 2013)-

 

Chciałbym dowiedzieć się kilku informacji na temat tworzenia aplikacji okienkowych od osób, które miały już z tym do czynienia.Głównie chodzi mi oto, że póki co piszę jakieś malutkie programiki ( jeżeli to "coś" można nazwać programem ), które działają jako aplikacje konsolowe. Jednak muszę stworzyć program do obsługi portu rs232 ( odbieranie i wysyłanie danych ). Wysyłanie danych w formie aplikacji konsolowej działa, jednak chcę to przenieść do jakiegoś "okna" przypominającego program. W tej chwili interesuje mnie stworzenie suwaka przesuwającego się po osi Y, przy wybraniu odpowiedniej pozycji i np. kliknięcia przycisku "OK", "Zatwierdź" etc. ma zostać wysłana jakaś liczba, np. "30" . Podobny program działa jednak jako aplikacja konsolowa ( wpisuję do uruchomionego programu np. liczbę, która wyświetla się kolejno na wyświetlaczu urządzenia podłączonym poprzez rs232.

 

Na sam początek chciałbym pobawić się taką aplikacją okienkową i np. po kliknięciu przycisku, w polu tekstowym ma się wyświetlić jakiś napis.

Tworząc aplikacje konsolową, najprostszy program do wyświetlania napisałbym tak:

 

#include <iostream>
using namespace std;
 
int main()
{
  cout << "WIADOMOSC";
}

 

(Piszę ten  temat już z 50min i nie mogę zebrać myśli, przepraszam za możliwość rozrzucenia różnych informacji po całym poście )

 

1.W zakładce C++ nie ma opcji "Windows Form Application", jednak wydaję mi się, że taka opcja kiedyś ( w starszych wersjach programu ) była. Jedyne co pozostaje mi od wyboru to zakładka Visual Basic lub C#, w których to mam możliwość wybrania "Windows Form Application" . Rozumiem, że C# to inny język niż C++, czy mam możliwość stworzenia aplikacji okienkowej w czystym C++ ?

 

  1. Jeżeli nie, to którą z tych opcje lepiej wybrać ?

 

3.Czy mogę używać tych samych poleceń z C++ ( mimo, że znam ten język bardzo słabo ), których używałem do pisania aplikacji konsolowych, aby napisać jakikolwiek program "okienkowy" ?

 

4.Przypuszczam, że to raczej wątpliwa sprawa, więc jak bardzo polecenia się od siebie różnią i czy mam możliwość jakiegoś takiego "przeskoku" z aplikacji konsolowych na okienkowe znając tylko trochę samego C++ ? Czy może muszę znaleźć sobie jakieś inne "pomoce" (strony internetowe, książki) do wyświetlania,wysyłania, odbierania danych w aplikacji okienkowej ?

 

  1. Czy macie dla mnie jakieś rady ?

 

Z góry dziękuję za pomoc.


(Rolek0) #2

Tak, kompletnie inny.

Tak, choć musisz użyć niestandardowych bibliotek, w bibliotece standardowej C++ nie ma czegoś takiego jak okno.

Pod Windowsem możesz użyć WinAPI (uwaga: trochę topornie się pisze pod to), albo bibliotek typu wxWidgets czy Qt (wieloplatformowe).

Piszesz w C++ ale używasz funkcji dostarczanych przez używaną przez Ciebie bibliotekę do okienek.

Jak słabo znasz C++ to się go doucz. Polecam: http://xion.org.pl/productions/texts/coding/megatutorial/

Jak zdecydujesz się na którąś bibliotekę do okienek to poczytaj też tutoriale do tej biblioteki (w sumie możesz najpierw poczytać, żeby zdecydować, która będzie dla Ciebie przystępniejsza).


(The Wampir96) #3

Zastanawiam się nad WinAPI lub Qt. Które biblioteki byś mi polecił ? Dodam, że póki co potrzebuje stworzyć coś przypominającego interfejs graficzny pod Windows używając C++ a w dalszej przyszłości przydałoby zrobić podobny interfejs pod Androida jednak jest to opcja bardziej “dodatkowa”. ( Głównie interesuje mnie windows)


(Marcineez) #4

Qt jest bardziej uniwersalne.


(The Wampir96) #5

Pobrałem Qt Creator w wersji 5.2.1 i póki co sprawdzam jak ten program działa.

 

Czy idę w dobrą stronę chcąc stworzyć aplikację okienkową z jakimiś interaktywnymi elementami używając ( póki co… ) samego C++ ?

 

Korzystając z książki Jerzego Grębosza, tak jak to napisałem wcześniej, pisałem programy w Visual Studio C++ 2013. Czy VS C++ przyda mi się w jakiś sposób do stworzenia aplikacji okienkowej, skoro mam już Qt Creator ?

 

Nie oczekuję tutaj podania “wszystkiego jak na tacy”, choć może to tak wyglądać, ze względu na ilość moich pytań. Po prostu jestem ograniczony czasowo i nie chcę, aby spotkała mnie sytuacja w stylu … Zacznę robić jedno, jednak okaże się, że nie do końca oto mi chodziło i nie będę miał już czasu aby zrobić czy zacząć “to drugie” . Mam nadzieję, że wyjaśniłem to w miarę zrozumiale.


(Protected_48) #6

C++ Builder też jest całkiem fajny do tworzenia aplikacji. Masz bardzo wiele technologii, jednak nie zaczynałbym tego zbyt szybko, tak jak wspomniał o tym poprzednik.

 

http://pl.wikipedia.org/wiki/Przeci%C4%85gnij_i_upu%C5%9B%C4%87


(The Wampir96) #7

Wciąż kombinuję coś w Qt Creator przy pomocy różnych tutoriali i swoich pomysłów, jednak muszę poczekać kilka dni na przyjście urządzenia, dzięki któremu będę mógł sprawdzić, czy program wysyłający dane do portu rs232 działa. Taka aplikacja działa w wersji konsolowej, jednak chce spróbować przenieść ją do “okna” i dodać trochę interfejsu. Póki co nie mogę dokładnie stwierdzić jaki program mi bardziej odpowiada.


(enedil) #8

To zależy od używanego kompilatora. Włącz Opcje w Qt Creatorze, następnie opcje budowy i zobacz co jest kompilatorem. Jeżeli MinGW, to możesz wyrzucić VS, jeżeli VS Compiler, to domyślasz się, że musisz VS zostawić.


(The Wampir96) #9

Kompilatorem jest MinGW.

 

Siedzę już trochę czasu przy tym programie i wciąż nie do końca rozumiem jak on działa.

 

Czy kod jakiegoś programu z VS mogę przenieść do Qt ? Mam na myśli coś w stylu:

 

Kod z VS:

 

#include <iostream>
using namespace std;
 
int main()
{
  int x;
  cout << "Podaj liczbe x: ";
  cin >> x;
  cout << "Liczba x = " << x << endl;
 
  system("pause");
}

 

I załóżmy, że w Qt chcę zrobić coś w na wzór okna, w którym są dwa pola tekstowe, jedno na podanie liczby x, drugie na jej wyświetlenie no i jakiś przycisk, który powodowałby właśnie “zaakceptowanie” wpisanej liczby i wyświetlenie jej w drugim polu tekstowym. Samo tworzenie obiektów mniej więcej rozumiem, nie potrafię jednak dodać kodu, który wprawiłby aplikację w działanie.


(enedil) #10

Moim zdaniem ten kod nie ma nic specyficznego z VS. A od layoutu masz Designer.


(The Wampir96) #11

Nie chodzi mi oto, że ten kod jest jakoś powiązany z VS, równie dobrze można go skompilować w DEV C++ czy czymkolwiek innym. Mam na myśli przerobienie takiego prostego kodu, który działa jako aplikacja konsolowa, na aplikację okienkową z przyciskiem i polem tekstowym.

 

@EDIT

 

Powoli zaczynam znajdywać odpowiednie dla mnie informację dotyczące napisania aplikacji okienkowej, więc kod napisany powyżej można puścić w nie pamięć. Gdyby ktoś jednak miał dla mnie jakieś rady dotyczące dodania,stworzenia interfejsu byłbym niezmiernie wdzięczny.

 

I czy aby na pewno powinienem próbować tworzyć coś poprzez Qt Creator czy spróbować czegoś innego ?


#12

Usunięto to ten szablon w nowszych wersjach bo był mylący. Mimo to powinieneś mieć możliwość tworzenie aplikacji w Windows Form w C++ za pomocą Windows Form. 

Zrób wszystko jak na tej stronie:

http://www.bogotobogo.com/cplusplus/application_visual_studio_2013.php

Ewentualnie pobierz z tamtą projekt i odpal w VS2013 i go zmodyfikuj. 

Działa?

Jeśli chcesz robić w WinApi (odradzam) to polecam książkę Programming Windows (chyba 5 edycja) napisaną przez Charlesa Petzolda. W Polsce wydane pod nazwą ‘Programowanie Windows’ na chomiku są po polsku słabe OCR w txt, więc lepiej czytać po angielsku. Koleś też pisał książki o Windows From.

Jeśli się dopiero uczysz c++ to może lepiej jakbyś z niego zrezygnował i zaczął się uczyć C#.

Jeśli chcesz programować w androidzie to Java.