Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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.
-
Jazyk C se na programování GUI zpravidla nepoužívá. Zkus si vybrat něco pohodlnějšího.
-
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.
-
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 ?
-
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á...
-
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 ?
-
Ahoj,
tato tema ma momentalne tiez zaujima. Chcel by som urobit jednoduche GUI pre moju aplikaciu, s tym ze:
- Malo by to bezat na Linuxe, Win a OS X.
- Malo by to dobre vyzerat na Linuxe, Win a OS X.
- Aplikacia je naprogramovana v cistom C. Na GUI by som chcel pouzit bud tiez ciste C, alebo nejaky vyssi skriptovaci jazyk.
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 :)
-
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.
-
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.
-
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ší...
-
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...
-
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.
-
Takže bych to shrnul.
C++ a k tomu Qt ?
-
Spíš naopak :-)
Qt a k tomu C++
-
„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.
-
Já používám vxWidgets, i díky dobré přenositelnosti.
-
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?
-
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 :-)
-
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.
-
Popřípadě ještě práce s webovou kamerou.
Ale to asi spíš Open CV
-
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.
-
Sériový port taky vypadá v pohodě :) :
http://pyserial.sourceforge.net/
-
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.
-
Zkus třeba IUP - http://www.tecgraf.puc-rio.br/iup/
Na základní věci je to snad jeden z nejjednodušších....
-
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...
-
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.
-
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
-
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.
-
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í.
-
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.
-
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... :)
-
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
-
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.
-
Ano šlo by to určitě hodně osekat.
Ale jde i o to že se tak učím ...
-
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é.
-
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
-
ale znamená to zase vysedávat u počítače od do ..
-
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.
-
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 ;]