Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Petros 17. 10. 2013, 16:35:31

Název: GUI pro aplikaci v C/C
Přispěvatel: Petros 17. 10. 2013, 16:35:31
Potrebuji pro aplikaci kterou mam v C napsat GUI. Nic mene nemam s tim ABSOLUTNE zadne zkusenosti. Muze nekdo poradit jak zacit?
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: eswrgewrtewrtw 17. 10. 2013, 20:35:13
http://stackoverflow.com/questions/4572314/graphical-user-interface-tutorial-in-c
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: libcha 18. 10. 2013, 08:27:18
Mě se takový husarský kousek povedl v GTK2, tak zkus začít tam.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Program 18. 10. 2013, 08:43:47
Proč se trápit s Cčkem? Vždyť se na to totálně nehodí. I když už to teda máte v C, tak co Vám brání udělat GUI v C++ ?
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: eMko 18. 10. 2013, 09:17:58
Přidávám se k C++. Qt je celkem příjemný framework a má relativně přiznivou licenci (LGPL).

Jinak z C++ není problém volat Cčkový kód - stejně je dobré rozdělit aplikační logiku od rozhraní, tak by to nemusel být problém.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Petros 18. 10. 2013, 09:33:02
Dobra, tak nebranim se tomu napsat program v jinem jazyce ... tzn. naucit se neco noveho...
Ktery by jste navrhly?
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Kolemjdoucí 18. 10. 2013, 09:38:07
Ktery by jste navrhly?

C#. GUI tam naklikáš za dopoledne, tvou aplikačku předěláš na DLL.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Program 18. 10. 2013, 09:47:21
Dobra, tak nebranim se tomu napsat program v jinem jazyce ... tzn. naucit se neco noveho...
Ktery by jste navrhly?

Takovou otázku prosím nepokládejte, nebo se tu zase rozjede flame a stejně se nic nedozvíte.

Osobně bych ve chvíli, kdy už mám "backend" v C, pokračoval v C++, ať z toho je pak jeden celek. U všeho ostatního budete řešit, jak to spojit dohromady.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Tomáš Marný 18. 10. 2013, 10:11:19
Jak už tu padlo - ber GTK. Dělá se v tom docela příjemně a nemusíš se kvůli tomu učit další jazyk. Akorát je to takový ukecaný.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Jan Amos Komenský 18. 10. 2013, 11:57:41
Dobra, tak nebranim se tomu napsat program v jinem jazyce ... tzn. naucit se neco noveho...
Ktery by jste navrhly?
Co třeba začít mateřským?
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: eMko 18. 10. 2013, 12:01:53
Je-li backend v C, dá se to propojit téměř se vším (ne-li úplně se vším). Nejlépe se bude propojovat s C++, ono C++ je navrženo jako superset (nadmnožina) jazyka C.

C# je taky v relativně OK, ale je potřeba tam znát prostředí .Net a jakým způsobem se propojuje na C (P/INVOKE). Ačkoliv se příklady na P/INVOKE zdají jednoduché, často se u netriviálních záležitostí vyskytnou chyby, které je na první pohled dost těžké odhalit. Toto si myslím, že by do projektu vneslo zbytečnou komplexitu a také buď závislost na MS Windows, nebo dávání si pozor co si člověk může a nemůže dovolit na Monu.

Znáš-li C, šel bych na Tvém místě do C++, což je v tomto případě nejschůdnější varianta. Qt framework má poměrně dobrý GUI builder, slušnou dokumentaci, je dobře navržený a nebudeš se muset učit tolik nových věcí - nejhorší je asi objektový přístup k programování - což je ale u GTK také. Nicméně GTK je Cčková knihovna, závislá na GObject, tedy implementaci objektového programování na procedurální jazyk. Myslím si, že učit se pracovat s GObject je podobně náročné, jako se naučit základy C++, které na toto budou stačit.

A co se týče dalších návrhů na to "v čem programovat ...", absolutně nemá smysl se ptát tady. Ptej se na stackoverflow nebo programmers.stackexchange. Ty fóra jsou dobře moderovaná => je slušná šance, že nevznikne flame a něco se dozvíš. Jediné co bych ještě chtěl dodat, tak "GUI naklikáš za odpoledne" je totální bullshit, jedná-li se o netriviální záležitost. Pokud chceš, aby bylo skutečně použitelné, aspoň trochu slušně vypadalo, umělo uživatele provést "workflow" různých úkolů, zobrazit správně chyby - vysvětlit, co se stalo a jak z toho ven a ještě tak, aby si to uživatel přečetl, rozhodně se to nedá jenom "naklikat" a už vůbec ne za odpoledne, jsou-li toho víc než 2 jednoduché obrazovky + About a Nastavení.

PS: A samozřejmě, chceš-li vytvářet jakékoliv rozhraní v českém jazyce, je třeba znát shodu podmětu s přísudkem.
de*ilové = navrhli
ku*vy = navrhly
by jste = Syntax Error. Did you mean "byste"?
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: dl 18. 10. 2013, 13:49:12
Trváš na tom že C++ je navrženo jako superset (nadmnožina) jazyka C? Možná mělo být...
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Kolemjdoucí 18. 10. 2013, 14:12:55
"GUI naklikáš za odpoledne" je totální bullshit, jedná-li se o netriviální záležitost.

Bude to triviální záležitost a bude to do šuplíku, proto jsem mu poradil co jsem mu poradil.
Ten kdo dělá něco většího a netriviálního, tak se neptá na fórech jak se dělá GUI.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: txt 18. 10. 2013, 14:18:01
Co takhle Python?
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: eMko 18. 10. 2013, 14:35:21
Trváš na tom že C++ je navrženo jako superset (nadmnožina) jazyka C? Možná mělo být...

Ano, je to tak. Jeho původní název je "C with Classes". Název "C++" se používá až někdy od půlky 80. let. Viz jeho historie - http://www.stroustrup.com/hopl2.pdf (ten článek je přímo od autora jazyka).

Samozřejmě realita je dnes trochu jiná - od té doby se oba jazyky vyvjíjí svou vlastní cestou, takže tvrzení "C++ je superset C" z pohledu logiky neplatí. Nicméně to, že tak bylo navrženo, ano :-) .

[quote author=Kolemjdoucí link=topic=7611.msg74900#msg74900
Bude to triviální záležitost a bude to do šuplíku, proto jsem mu poradil co jsem mu poradil.
Ten kdo dělá něco většího a netriviálního, tak se neptá na fórech jak se dělá GUI.
[/quote]

V tom případě - je vůbec nutno ztrácet čas GUIčkem?
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: belzebub 18. 10. 2013, 15:05:37
Kdyz zde padlo "treba jiny jazyk", tak bych rad prihodil svuj nazor - myslim ze psat GUI v C nebo C++ je velmi spatny napad. Pokud se jedna o "tlustou aplikaci" a je to mozne napsat v jinem jazyce (cast v C je pouze knihovna, popr. nejak ochotne komunikuje s jinymi procesy), rozhodne bych pouzil co "nejhodnejsi" jazyk - tj. bud python (jak zde jiz nekdo navrhnul), ruby pripadne na windows klidne i visual basic. Hodne bych ale zvazil i moznost napsat to s www rozhranim - to je v dnesni dobe casto uplne nejlepsi volba.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Kolemjdoucí 18. 10. 2013, 15:37:58
Hodne bych ale zvazil i moznost napsat to s www rozhranim - to je v dnesni dobe casto uplne nejlepsi volba.

Vskutku pekelná rada :-)
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: 3ugeene 18. 10. 2013, 15:47:58
PS: A samozřejmě, chceš-li vytvářet jakékoliv rozhraní v českém jazyce, je třeba znát shodu podmětu s přísudkem.
de*ilové = navrhli
ku*vy = navrhly
by jste = Syntax Error. Did you mean "byste"?

 ;D ;D ;D
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: eMko 18. 10. 2013, 15:50:53
Yes!

Třeba v případě Javy by to šlo :-)

http://www.eclipse.org/jetty/documentation/current/embedding-jetty.html

pak stačí napsat funkci

Kód: [Vybrat]
public static void openWebpage(URI uri) {
    Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
        try {
            desktop.browse(uri);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

a je to :-).

Ne, teď vážně. Psát GUI aplikaci, což pro majoritu lidí znamená tlustého klienta, jako webovku, není dobrý nápad ani v dnešní, ani v jakékoliv jiné dohledné době.

Let the flame begin!
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: mares.vit 18. 10. 2013, 23:34:05
Je to do školy? Má to být jednoduché? Zkuste PicoTK (http://picotk.sourceforge.net/).
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Jaroslav 20. 10. 2013, 16:33:37
Za tu chybu s y/i je mi opravdu trapne. Takze se omlouvam a dal to prosim nerozebirejme...

Nejde o skolni projekt. Spis se chci neco sam naucit. Udelal sem si jednoduchy program, ktery komunikuje s nekolika DB a stahuje z nich data se kteryma pak dal pracuje a vyhodnocuje je na zaklade vstupnich pozadavku uzivatele. Nicmene bych ten program rad rozsiril o GUI v ramci samostudia.

Pro zacatek bych chtel proste vytvorit GUI v linuxu, ktery zvladne spoustet jednotlive funkce programu a vracet z nej vystupy. V php by to sice slo, ale jde mi o to se neco noveho naucit... Casem bych pak jeste chtel pridat napr. grafy ....

 

Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Rado2 20. 10. 2013, 16:53:01
Prilis vseobecne polozena otazka. Pre aky OS a ake prvky ma mat to gui? Stacia nejake editboxy, alebo aj nieco komplikovanejsie, ako stromy s viacetymi stlpcami, editovatelne tabulky, grafy, atd.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Jaroslav 20. 10. 2013, 21:37:02
V prvni rade: tlacitka spoustejici akci, tabulka pro zobrazeni vysledku, input box pro zadani novych hodnot.
V druhe: grafy, moznost tisku 

Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Rado2 20. 10. 2013, 22:12:03
sorry, nevsimol som si predosly post. V linuxe som GUI programoval naposledy asi pred 10 rokmi, vtedy som pouzil wxWidgets ( http://www.wxwidgets.org/ ),
na taketo ucely by to malo stacit, je to multiplatformova C++ GUI kniznica, vyhoda je, ze to na kazdej platforme vyzera ako nativna aplikacia,
na rozdiel od Qt, ak sa nemylim (Qt som tiez vela rokov nevidel). Osobne nemam rad GUI ktore vyzera na desktope ako z inej planety.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Dominik Janků 21. 10. 2013, 00:17:06
Co takhle Python?

Také Vám navrhuji Python. Dělá se v něm velice rychle, kód je přehledný a rychlý. Osobně dávám přednost grafické knihovně GTK, ale stejně dobře můžete použít Qt.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Brilantní modř 21. 10. 2013, 17:30:02
Zdravím. Doporučuju z vlastní zkušenosti Perl a GTK+, nebo samotné C a GTK+. Perl by si měl s Céčkem dobře rozumět. Pokud se rozhodnete pro GTK+, nabídnul bych vám s programováním GUI pomoc.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: eMko 21. 10. 2013, 19:39:32
Spíš než Perl je lepší volba Python; oba jazyky jsou dobře navržené, ale Python s filosofií "k cíli má vést 1 cesta, a to ta nejvíce zřejmá" je v tomto případě lepší varianta než "existuje více cest, jak to udělat". Z prvních pokusů s Perlem téměř všech mých známých vždy vznikl kód k nerozeznání od Branfucku (http://en.wikipedia.org/wiki/Brainfuck).

Samozřejmě ale moje doporučení C++ stále trvá - nebudeš se muset učit více nového, než je nutné.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Waseihou 21. 10. 2013, 20:07:59
Pokud C, tak je celkem bez problému možné udělat část programu v C++. Pak je to krom Qt ještě další, starší, primitivnější, "MFCčkovatější" framework:

http://www.ultimatepp.org/

Světe div se, ale ono se to pořád používá a přežívá to...
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Pišta 21. 10. 2013, 20:43:52
Ja mám dobré skúsenosti s wxWidgets. Je to jednoduchý toolkit, štýlom asi z roku 2000, ale robí sa v ňom v pohode a stačí ovládať základy OOP. UI sa dá naklikať, napríklad v Code::Blocks. Dá sa v tom urobiť naozaj bohaté UI a pokiaľ chcete začať tabuľkami, tak wxGrid bol dobrý už pred desiatimi rokmi. Na grafy som len tak narychlo nasiel wxFreeChart http://wxcode.sourceforge.net/components/freechart/
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Brilantní modř 21. 10. 2013, 22:20:17
Existuje také poměrně zajímavý FOX toolkit (http://www.fox-toolkit.org/). Přišel jsem na něj tak, že jsem začal používat Xfe; je to v C++ a je to multiplatformní a rychlé jak blesk.
Název: Re:GUI pro aplikaci v C/C
Přispěvatel: Brilantní modř 21. 10. 2013, 22:36:06
Spíš než Perl je lepší volba Python; oba jazyky jsou dobře navržené, ale Python s filosofií "k cíli má vést 1 cesta, a to ta nejvíce zřejmá" je v tomto případě lepší varianta než "existuje více cest, jak to udělat". Z prvních pokusů s Perlem téměř všech mých známých vždy vznikl kód k nerozeznání od Branfucku (http://en.wikipedia.org/wiki/Brainfuck).

Proto mu také nabízím pomoc :-)

S Perlem je to jako v životě, k výsledku prostě vede více cest (pokud chci něco říct, můžu to říct více způsoby). Stačí si vybrat jednu a tu se naučit a pak použít, nebo prostě:

Kód: [Vybrat]
#!/usr/bin/perl
use strict;
use warnings;
...