Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Jakub 08. 06. 2012, 12:58:03

Název: GUI pro aplikace v C
Přispěvatel: Jakub 08. 06. 2012, 12:58:03
Dobrý den,
chtěl bych se zeptat někoho kdo vytváří GUI pro aplikace v C.
Používáte pouze editor kódu a knihovny gnome.h a gtk/gtk.h ?
S tím že znáte struktury z paměti ?
Nebo třeba používáte něco jako QT ?

Jsem v C začátečník, zvládnu bez problému vytvořit graficky jednoduchou aplikaci, která například čte data z MYSQL atd..
Nic méně mi přijde, že vytvořený GUI za pomocí knihoven gnome a gtk je graficky "nezajímavý" a vytvoření kódu zbytečně zdlouhavé
a náchylné na chybu.

Nebo pokud by mi někdo doporučil nějaký postup, či zdroj, ze kterého se dá naučit jak vyvářet graficky přívětivé aplikace budu rád.


 
Název: Re:GUI pro aplikace v C
Přispěvatel: Kit 08. 06. 2012, 13:09:00
Jazyk C se na programování GUI zpravidla nepoužívá. Zkus si vybrat něco pohodlnějšího.
Název: Re:GUI pro aplikace v C
Přispěvatel: Neviditelný 08. 06. 2012, 13:36:47
GTK se používá na programování GUI v C (i C++) docela běžně, třeba celé GNOME je v tom napsané. Qt mi osobně přijde trochu jednodušší a "šikovnější" k použití, ale zase se nedá použít v C. Největší výhoda Qt při návrhu GUI se projeví, až když doopravdy využijete všech možností jako QML či návrhářů, ve kterých si můžete GUI doslova nakreslit.
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 08. 06. 2012, 13:39:16
Jak říkám jsem v tom začátečník a uvítal bych radu :o)
Mohl by mi teda někdo poradit něco v čem je možné vytvářet graficky přivětivé GUI ?
něco co vykreslí grafy či nějakou animaci atd..

Nebo mám pokračovat ve studiu knihovny gtk a gnome ?
Název: Re:GUI pro aplikace v C
Přispěvatel: Honza 08. 06. 2012, 13:55:02
Pro GTK existuje nástroj/návrhář Glade (jak pro Win tak pro Linux). Celé UI lze naklikat a uložit do souboru...
Není nutné všechno programovat! Načtení toho souboru a napojení všech signálů je na dva řádky...
Ve všech příkladech je to děláno ručně, vím o tom, to je velká škoda... U vykreslování grafů a animací se ale programování vyhnout moc nedá...
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 08. 06. 2012, 14:13:28
Skvělě ! Děkuji ...
Právě, že se učim z knížky a tam je všechno rozepsáno a navíc se v tom celkem složitě orientuje pokud je příklad rozsáhlejší.
Na druhou stranu mám aspoň přehled, co kde a jak ....  :)

Jinak k těm grafům a " progress barrům "...
Ty se pravděpodobně také programují pomocí těchto knihoven, že ?
Název: Re: GUI pro aplikace v C
Přispěvatel: X 08. 06. 2012, 14:31:45
Ahoj,

tato tema ma momentalne tiez zaujima. Chcel by som urobit jednoduche GUI pre moju aplikaciu, s tym ze:
Okrem znamym moznosti (Qt, Gtk, vxWidgets) uvazujem este nad XULRunnerom. Co by ste mi odporucili? Dakujem.

PS: Ospravedlnujem sa za ukradnutie diskusie, ale snad to suvisi s temou :)
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 08. 06. 2012, 14:44:05
No já mám aplikaci, která mi ze zabezpečovacího systému který pracuje s MYSQL podává různá hlášení.

Původně jsem přemýšlel jak vytvořit aplikaci, která by zobrazovala předchystané "gif animace" které by se v závislosti na události zobrazovaly.

Ale určitě je nějaký způsob jak vytvořit například jednoduchý model objektu a ten podle situace dynamicky měnit.

Ale jelikož jsem samouk tak nemám moc přehled co vhodně použít, aby se to alespoň podobalo mé vizi.
Tak snad se někdo kdo se něčemu takovému věnuje ozve a poradí.
Je mi jasné, že to nebude nic snadného, ale tak nějak se začít musí  a tak uvítám jakoukoliv radu.

 
Název: Re:GUI pro aplikace v C
Přispěvatel: Program 08. 06. 2012, 16:23:05
Hlavně je nesmysl to dělat v C, C++ se na to podle mě taky nehodí. Pokud děláte jen nějaký ksicht a jste začátečník, tak zkuste spíše python, ruby, případně javu (ale tam je otázka, jak snadno do ní budete dostávat data).

Samozřejmě pokud se zároveň chcete přiučit C++, tak ok, ale rozhodně ne C.
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 08. 06. 2012, 16:31:26
Do Javy, Ruby atd.. se mi zatím moc nechce,  chtěl bych spíše ovládnout C a C ++ což je si myslím ten nejdůležitější základ.

Dobrá tedy, není pro mě problém naučit se C ++.

Teď ta zapeklitější otázka.
Zná někdo publikaci, či nějaké šikovné stránky, kde je programovaní v C++ směřováno na vývoj grafických aplikací ?
Omlouvám se za takovéto dotazy, ale publikací je nepřeberně mnoho a tak je těžké zjistit, která je ta nejvhodnější...



Název: Re:GUI pro aplikace v C
Přispěvatel: Program 08. 06. 2012, 16:50:23
C,C++ spíše základ býval, než je. Dnes je to C++, které se snaží vypadat jako mladší jazyky, C zůstává kapotovaný assembler. Dělat GUI v C je asi jako jet na kole bez šlapátek brnkáním do špajchen. Nemá smysl dělat GUI v neobjektovém jazyku, obzlášť ne pro začátečníka.

Jinak i v C++ budete muset řešit spoustu chujovin okolo, které kvůli jednoduchému GUIčku opravdu nemusíte řešit. Navíc pokud uděláte GUIčko např. v pyGTK, tak pak budete i lépe chápat, jak to udělat v C++, ale takhle se učíte 2 a více věcí zároveň.

Dále stačí zagooglit a materiálů máte víc, než za život přečtete...
Název: Re:GUI pro aplikace v C
Přispěvatel: Petr Bravenec 08. 06. 2012, 16:57:25
Učte se C++ a zkuste Qt:
http://doc.qt.nokia.com/

Na GUI i CLI aplikace ideální, a to i přes to, že vám spousta lidí bude říkat něco jiného.
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 08. 06. 2012, 17:01:22
Takže bych to shrnul.

C++ a k tomu Qt ?
Název: Re:GUI pro aplikace v C
Přispěvatel: Petr Bravenec 08. 06. 2012, 17:16:20
Spíš naopak :-)

Qt a k tomu C++
Název: Re:GUI pro aplikace v C
Přispěvatel: pavlix 08. 06. 2012, 23:15:08
„Dělat GUI v C je asi jako jet na kole bez šlapátek brnkáním do špajchen. Nemá smysl dělat GUI v neobjektovém jazyku, obzlášť ne pro začátečníka.“

I začátečník se může naučit...  takže pokud už to musí být C, tak mě nenapadá jiná volba než GTK pro běžné aplikace, popřípadě Clutter pro různé hry, celoobrazovkové aplikace, embedded zařízení. Obojí jsem vyzkoušel a spokojenost.
Název: Re:GUI pro aplikace v C
Přispěvatel: r23 09. 06. 2012, 18:08:47
Já používám vxWidgets, i díky dobré přenositelnosti.
Název: Re:GUI pro aplikace v C
Přispěvatel: bu 09. 06. 2012, 22:09:17
Já používám vxWidgets, i díky dobré přenositelnosti.

To je ten hrozivej bastl na úrovni M$ MFC a odpovídající stavu C++ před dvacet lety?
Název: Re:GUI pro aplikace v C
Přispěvatel: iwtu 10. 06. 2012, 12:20:38
Ciste C na GUI --> gtk, ale to sa uz pouziva iba zo zotrvacnosti ak mate miliony riadkov spravenych v gtk, tak sa to nikomu nechce prepisovat do niecoho ineho (priklad Evolution).
Pristup, viem C (co mozete, lebo v podstate je to jednoduchy jazyk) tak chcem vsetko robit v C, je silno zabedneny. Cesi maju krasne prislovie: "Mate-li  jenom kladivo, vsechno vypada jako hrebik".
Co sa tyka Qt, to zvladne aj zaciatnocik, lebo sa da bez problemov programovat v Qt (aj konzolove aplikacie), ktore je nieco ako framework nad C++ a dost ho zjednodusuje. C++ nie je lahky jazyk. Ba je najtazsi procedularny aky poznam. Nejden znamy tvrdi, ze neprogramuje v C++ ale v Qt :-)
Este by bolo rozumne sa zamysliet nad zmyslom GUI. GUI skoro vsetok cas, co svieti blika a skace, caka na uzivatela a uzivatel je z principu pomaly. Preto ja osobne by som pouzil pyQt, python. Rychlejsi vyvoj a bude to mat ten isty efekt. Python je oproti C++ realne naozaj silno pomalsi, ale v pripade GUI ten rozdiel ani nepostrehnete, lebo stale sa caka na uzivatela.

A keby som si to robil len tak pre srandu, ako sa poznam, neviem, ci by som nespravil GUI v Haskelli. Uz ma to dlhsie taka :-)
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 11. 06. 2012, 09:38:43
Tak tedy QT a k tomu C++.

Kdo by volil jinak ?
A za co ?

Požadavky jsou:
operace s MYSQL, čtení - zápis  z FD ( sériového portu ), vykreslení grafů a přívětivé GUI.
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 11. 06. 2012, 09:41:42
Popřípadě ještě práce s webovou kamerou.
Ale to asi spíš Open CV
Název: Re:GUI pro aplikace v C
Přispěvatel: tadeas 11. 06. 2012, 09:54:58
Qt a Python - proč? Protože C++ je příšernej opruz. I když budiž ke cti Qt připsáno, že člověk nemusí využívat všech možností C++.

Kreslení krafů: matplotlib (jednodušší a hezčí, než gnuplot) - suprová knihovna Pythonu

MySQL: MySQLdb nebo SQLAlchemy pokud máš rád ORM - opět hezké a jednoduché knihovny Pythonu

Čtení FD: v pohodě všude, tady na tom nezáleží. Otázka je mapování sériového portu na FD, ale to je spíš věc systému.
Název: Re:GUI pro aplikace v C
Přispěvatel: tadeas 11. 06. 2012, 09:58:57
Sériový port taky vypadá v pohodě :) :
http://pyserial.sourceforge.net/
Název: Re:GUI pro aplikace v C
Přispěvatel: Ivan 11. 06. 2012, 10:03:55
Od XULRunneru utec. Na prvni pohled to vypada zajimave, ve skutecnosti je ale prace s XULem absolutne priserne neefektivni. Pokud se ti libi XUL, tak se koukni na  Adobe AIR. To je v podstate to samy co XUL akorat to ma navic IDE, dokumentaci a funkcni priklady.
Název: Re:GUI pro aplikace v C
Přispěvatel: Severák 11. 06. 2012, 17:16:34
Zkus třeba IUP  - http://www.tecgraf.puc-rio.br/iup/

Na základní věci je to snad jeden z nejjednodušších....
Název: Re:GUI pro aplikace v C
Přispěvatel: and 11. 06. 2012, 19:20:07
Požadavky jsou:
operace s MYSQL, čtení - zápis  z FD ( sériového portu ), vykreslení grafů a přívětivé GUI.

Ja bych to videl takhle:
1. Neco co bude cist a zapisovat z FD (a predpokladam ze i do databaze) - C, C++, Python, shell, php, perl, atd...
2. PHP/Perl/Python/Java atd... webserver
3. GUI pres WEB - JQuery, Javascript, HTML - vetsina dostupna jako komponenty

Je to asi slozitejsi, ale vic se naucis, bude to progresivni a jako bonus dostanes inet pristup...
Název: Re:GUI pro aplikace v C
Přispěvatel: Franta 11. 06. 2012, 20:22:18
Este by bolo rozumne sa zamysliet nad zmyslom GUI. GUI skoro vsetok cas, co svieti blika a skace, caka na uzivatela a uzivatel je z principu pomaly. Preto ja osobne by som pouzil pyQt, python.
Ale zase když už uživatel začne klikat nebo psát, tak chce okamžitou reakci a roli hrají i milisekundy.
Název: Re:GUI pro aplikace v C
Přispěvatel: omg 11. 06. 2012, 21:55:48
to co napsal uz pavlix... pokud to musi byt v C, tak asi ten clutter i kdyz ten se da pouzit i odjinud nez z C
Název: Re:GUI pro aplikace v C
Přispěvatel: Kit 11. 06. 2012, 23:31:58
Este by bolo rozumne sa zamysliet nad zmyslom GUI. GUI skoro vsetok cas, co svieti blika a skace, caka na uzivatela a uzivatel je z principu pomaly. Preto ja osobne by som pouzil pyQt, python.
Ale zase když už uživatel začne klikat nebo psát, tak chce okamžitou reakci a roli hrají i milisekundy.

Ovšem v tu chvíli už běží předkompilovaná část skriptu v Pythonu či jiném skriptovacím jazyku, takže i to je rychlé. Snažit se urychlit GUI tím, že místo moderních jazyků budu používat C, je zcestné. Optimalizovat je nutné pouze tam, kde to má smysl.
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 12. 06. 2012, 09:19:50
Citace
Ja bych to videl takhle:
1. Neco co bude cist a zapisovat z FD (a predpokladam ze i do databaze) - C, C++, Python, shell, php, perl, atd...
2. PHP/Perl/Python/Java atd... webserver
3. GUI pres WEB - JQuery, Javascript, HTML - vetsina dostupna jako komponenty

Je to asi slozitejsi, ale vic se naucis, bude to progresivni a jako bonus dostanes inet pristup...

Aktuální sběr dat ze sběrnice EZS provádí jednoduchý program v C, který se systému ptá pomocí otevřeného fd nad sériovým portem a přijatá data strká do MYSQL.

Pak mám tu představu, že bych rád postavil kontrolní terminál pro zobrazování dat ze systému ( obsahuje i kontrolu teploty aj. )
kde má operátor možnost se přepínat mezi více nabídkami + nějaké funkce jako nahrátí dat na flash disk atd.

Proto potřebuji aby aplikace fungovala ve full-screen bez možnosti "sestřelení" standardním uživatelem.
Webcontrol pomocí php a apache ten je celkem jednoduchý pro vzdálenou kontrolu. Ale jelikož kontrolní terminál bude obsluhovat více smrtelníku tak musí být řízen blbuvzdornou aplikací, která ma intuitivní a přívětivé grafické rozhraní.



 
Název: Re:GUI pro aplikace v C
Přispěvatel: roman 12. 06. 2012, 09:41:40
Doporucujem Qt, mozte skombinovat s Pythonom (PySide). Od verzie 4.7 je v Qt k dispozicii QtDeclarative a jazyk QML, co vam umoznuje napisat celu aplikaciu napriklad aj v JavaScripte. Najdite si na webe QtQuick, je tam vela tutorialov.
Název: Re:GUI pro aplikace v C
Přispěvatel: and 12. 06. 2012, 11:43:41
Citace
Ja bych to videl takhle:
1. Neco co bude cist a zapisovat z FD (a predpokladam ze i do databaze) - C, C++, Python, shell, php, perl, atd...
2. PHP/Perl/Python/Java atd... webserver
3. GUI pres WEB - JQuery, Javascript, HTML - vetsina dostupna jako komponenty

Je to asi slozitejsi, ale vic se naucis, bude to progresivni a jako bonus dostanes inet pristup...

Aktuální sběr dat ze sběrnice EZS provádí jednoduchý program v C, který se systému ptá pomocí otevřeného fd nad sériovým portem a přijatá data strká do MYSQL.

Pak mám tu představu, že bych rád postavil kontrolní terminál pro zobrazování dat ze systému ( obsahuje i kontrolu teploty aj. )
kde má operátor možnost se přepínat mezi více nabídkami + nějaké funkce jako nahrátí dat na flash disk atd.

Proto potřebuji aby aplikace fungovala ve full-screen bez možnosti "sestřelení" standardním uživatelem.
Webcontrol pomocí php a apache ten je celkem jednoduchý pro vzdálenou kontrolu. Ale jelikož kontrolní terminál bude obsluhovat více smrtelníku tak musí být řízen blbuvzdornou aplikací, která ma intuitivní a přívětivé grafické rozhraní.
V mem reseni by jsi tedy jeste udelal komponentu, ktera bude davat data na flasku ci delat neco dalsiho, volano bude z webserveru - opet muze byt skoro jakykoliv jazyk....  ;)

No a do prohlizece pridas akorat neco z tohoto:
https://addons.mozilla.org/cs/firefox/search/?q=kiosk&cat=all (https://addons.mozilla.org/cs/firefox/search/?q=kiosk&cat=all)
ci
chrome -kiosk

a myslim ze mas blbuvzdornou, intuitivni aplikaci s privetivym rozhranim...  :)
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 12. 06. 2012, 13:43:58
Jde o téměř veřejně přístupný počítač, který je zabudován do rozvaděče v chodbě budovy.
Ven kouká akorát doteková obrazovka a usb port.
Takže flash disc tam určitě nebude pořád. V aplikaci bude "tlačítko" pro import / export požadovaných dat.

Takže chci aby to byla aplikace, která poběží ve full-screen.

Vizi mám akorát jsem potřeboval poradit jaký prostředek  k tomu zvolit
Název: Re:GUI pro aplikace v C
Přispěvatel: Aladár 12. 06. 2012, 16:21:34
Požadavky jsou:
operace s MYSQL, čtení - zápis  z FD ( sériového portu ), vykreslení grafů a přívětivé GUI.

Ja bych to videl takhle:
1. Neco co bude cist a zapisovat z FD (a predpokladam ze i do databaze) - C, C++, Python, shell, php, perl, atd...
2. PHP/Perl/Python/Java atd... webserver
3. GUI pres WEB - JQuery, Javascript, HTML - vetsina dostupna jako komponenty

Je to asi slozitejsi, ale vic se naucis, bude to progresivni a jako bonus dostanes inet pristup...
Přijde mi to jako naprosto zbytečně složité řešení - bude se potýkat se spoustou problémů, pokud jsou pro něj tyhle technologie nové. Jsem spíš pro rozdělení na čtení dat s plněním db a GUI aplikaci, třeba v tom zmiňovaném Qt.
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 12. 06. 2012, 16:37:06
Ano šlo by to určitě hodně osekat.
Ale jde i o to že se tak učím ...
Název: Re:GUI pro aplikace v C
Přispěvatel: Aladár 12. 06. 2012, 16:54:10
Ano šlo by to určitě hodně osekat.
Ale jde i o to že se tak učím ...
Jde o rozdíl mezi "učit se" a "totálně se ztratit v tunách nových věcí, které spolu navzájem souvisí"...

Obávám se, že by šlo o to druhé.
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 12. 06. 2012, 17:01:44
Tak pokud si nad to sednu s knížkou, která má aspoň trošku hlavu a patu, tak si nemyslím, že by to měl být velký problém.
Druhá věc je že nějak začít musím
Název: Re:GUI pro aplikace v C
Přispěvatel: Jakub 12. 06. 2012, 17:05:55
ale znamená to zase vysedávat u počítače od do ..
Název: Re:GUI pro aplikace v C
Přispěvatel: and 12. 06. 2012, 19:59:46
ale znamená to zase vysedávat u počítače od do ..
Je otazka co kdo povazuje za zajimave z hlediska vlastniho rozvoje.

Ja to mam tak - cim vic veci znam, tim lip. A zaroven, cim jednoduseji veci delam, tim mensi je pravdepodobnost, ze se nekde neco podela. Zaroven to ma tu vyhodu ze vyvoj a nasazeni je rychle. Vyse uvedene reseni maximalne uprednostnuje poskladani overenych komponent do celku a jen jejich pospojovani (poslepovani) nejakym tim kodem.

Pokud se jedna o jednorazove reseni, nepremyslel bych nad necim slozitejsim. Pokud to bude alespon pro 50 kusu+, pak ok - specialni aplikace ma asi cenu.

PS a nekdo to muze mit tak, ze nauceni se Qt je supr vec  ;) Ja treba vim, ze nez bych prisel na to jak pracovat s Qt, aby byla aplikace blbuvzdorna, tak to s html a par knihovnama v javascriptu budu mit 10x hotovy.
Název: Re:GUI pro aplikace v C
Přispěvatel: Ales 12. 06. 2012, 22:51:33
zdravim,
aplikacka nevypada nikterak slozite, tak zkus pouzit vsechny zminovany technologie a pak uvidis, ktera ti nejvic sedne.
a stale plati: kolik jazyku umis, tolikrat jsi clovekem ;]