Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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?
-
http://stackoverflow.com/questions/4572314/graphical-user-interface-tutorial-in-c
-
Mě se takový husarský kousek povedl v GTK2, tak zkus začít tam.
-
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++ ?
-
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.
-
Dobra, tak nebranim se tomu napsat program v jinem jazyce ... tzn. naucit se neco noveho...
Ktery by jste navrhly?
-
Ktery by jste navrhly?
C#. GUI tam naklikáš za dopoledne, tvou aplikačku předěláš na DLL.
-
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.
-
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ý.
-
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?
-
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"?
-
Trváš na tom že C++ je navrženo jako superset (nadmnožina) jazyka C? Možná mělo být...
-
"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.
-
Co takhle Python?
-
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?
-
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.
-
Hodne bych ale zvazil i moznost napsat to s www rozhranim - to je v dnesni dobe casto uplne nejlepsi volba.
Vskutku pekelná rada :-)
-
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
-
Yes!
Třeba v případě Javy by to šlo :-)
http://www.eclipse.org/jetty/documentation/current/embedding-jetty.html
pak stačí napsat funkci
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!
-
Je to do školy? Má to být jednoduché? Zkuste PicoTK (http://picotk.sourceforge.net/).
-
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 ....
-
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.
-
V prvni rade: tlacitka spoustejici akci, tabulka pro zobrazeni vysledku, input box pro zadani novych hodnot.
V druhe: grafy, moznost tisku
-
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.
-
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.
-
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.
-
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é.
-
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...
-
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/
-
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.
-
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ě:
#!/usr/bin/perl
use strict;
use warnings;
...