kemi (statz) | #2, Főfasz (2970) |
917 | #2100 | ^ | Idézet | Mon, 22 Oct 2012 20:45:34 +02 |
188.143.*.* | *.pool.digikabel.hu |
GTK. Próbálkoztam Qt-vel, de nem nagyon jött be nekem. Mindenből saját típusa van, ide-oda kell castolgatni a Qt-s meg a standard c-s típusok között, meg az eseménykezelés is elég furán van megoldva. Standard. C fájlokat nem nagyon szoktak inkludálgatni. Egyébként kész van. Az itt fent levő régi verzió ~160k, (na és ez még össze van csomagolva upackkal) az új ~40k, vagyis jóval kisebb lett. Egy 30 megás fájlt 40 másodperc alatt titkosít egyszer. Jó lenne bencsmárkolni, de az itt fent levő bugos, és nincs már meg nekem a forrása, meg nem fair egy wineból futó valamit egy natív linuxos programmal összehasonlítani. :P |
TCH (statz) | #1, Főfasz (10443) |
751 | #2101 | ^ | Idézet | Mon, 22 Oct 2012 21:36:44 +02 |
31.46.*.* | *.catv.pool.telekom.hu |
Typedeffel nem lehet ezt megoldani? BTW, a GTK tényleg akkora hányadék, mint ahogy mondják, vagy eltúlozzák? Ok, ha standard, akkor standard. Nekem elvileg még megvan, de igazából hóttmindegy, mert tuti, hogy a mostani GCC gyorsabb kódot csinál, mint az ezeréves Delphi 7. |
kemi (statz) | #2, Főfasz (2970) |
374 | #2102 | ^ | Idézet | Mon, 22 Oct 2012 22:03:44 +02 |
188.143.*.* | *.pool.digikabel.hu |
Nem, mert objektumorientáltan van megoldva. Metódushívásokkal lehet konvertálgatni. A GTK full C, és nem C++, (de van wrapper C++-hoz) és úgy még undorítóbban néz ki az OOP. :P De legalább a standard típusokat nem kell össze-vissza konvertálgatni. |
TCH (statz) | #1, Főfasz (10443) |
349 | #2103 | ^ | Idézet | Mon, 22 Oct 2012 23:01:49 +02 |
31.46.*.* | *.catv.pool.telekom.hu |
O-la-la, az mégis mi a túróra való? C-ben vannak ojjektumok? O_O Én azt hittem csak struct van. Milyen GUI buildert használtál egyébként? |
kemi (statz) | #2, Főfasz (2970) |
334 | #2104 | ^ | Idézet | Mon, 22 Oct 2012 23:37:25 +02 |
188.143.*.* | *.pool.digikabel.hu |
Úgy van, hogy bele van hekkelve az OOP. Van egy struct ami maga az objektumpéldány, benne vannak a mezők, a metódushívás meg egy függvény, ami megkapja cím szerint az objektumpéldányt. Glade. |
TCH (statz) | #1, Főfasz (10443) |
321 | #2105 | ^ | Idézet | Mon, 22 Oct 2012 23:45:39 +02 |
31.46.*.* | *.catv.pool.telekom.hu |
Dehát a struct az nem ojjektum, csak adatszerkezet. Valami példát tudsz mutatni? Mert bevallom, kurwára nem értem. |
kemi (statz) | #2, Főfasz (2970) |
1517 | #2106 | ^ | Idézet | Tue, 23 Oct 2012 09:08:00 +02 |
92.249.*.* | 92.249.*.* |
Van egy nagy struct, meg egy csomó függvény ami beállít meg kiszed belőle dolgokat. A struct csak adatszerkezet (kb. mintha statikus mezőid lennének), de ha már vannak függvények (metódusok) amik dolgoznak rajta, a belső adatokat pedig elfedik a használó elől az már OOP. Pl. Így néz ki a fájlokat beállító függvény:void on_button_set_files_clicked(GtkWidget* widget, gpointer data) { GtkWidget* opendialog = gtk_file_chooser_dialog_new("Input file", GTK_WINDOW(window), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_OPEN, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); GtkResponseType open_response = gtk_dialog_run(GTK_DIALOG(opendialog)); char* infile = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(opendialog)); gtk_widget_destroy(opendialog); GtkWidget* savedialog = gtk_file_chooser_dialog_new("Output file", GTK_WINDOW(window), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_SAVE, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); GtkResponseType save_response = gtk_dialog_run(GTK_DIALOG(savedialog)); char* outfile = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(savedialog)); gtk_widget_destroy(savedialog); if (open_response == GTK_RESPONSE_OK && save_response == GTK_RESPONSE_OK) { gtk_entry_set_text(GTK_ENTRY(entry_infile), infile); gtk_entry_set_text(GTK_ENTRY(entry_outfile), outfile); files_set = 1; } } |
TCH (statz) | #1, Főfasz (10443) |
280 | #2107 | ^ | Idézet | Tue, 23 Oct 2012 14:24:10 +02 |
31.46.*.* | *.catv.pool.telekom.hu |
Jó, "tömör" kód. :P Tuti grafománok használják a GTK-t. :P Qt-ban hogy nézne ki ugyanez? Vagy ott meg a castolgatás miatt lenne ugyanilyen a kód? Miért kell a dialógusokat használat után törölni? Nem jó úgy, mint Lazarusban/Delphiban, hogy végig ott vannak és hívhatóak? |
kemi (statz) | #2, Főfasz (2970) |
586 | #2108 | ^ | Idézet | Tue, 23 Oct 2012 16:19:01 +02 |
92.249.*.* | *.pool.digikabel.hu |
Az, de a C nyelv ilyen. :) A dialógusablakok deklarációjában talán makróval lehetne szépíteni. Meg lehet neki adni egy sor gombot, de úgyis csak egy OK meg egy mégse kell. Ott a dialógusablakból egy QString-be kapod meg a fájlnevet. Amíg csak bele kell írni egy textboxba teljesen oké, de ha fel kell használni valami fájlművelethez, akkor már charstringbe kell konvertálni. Addig nem záródik be az ablak amíg nem hívsz rá egy destroyt. |
TCH (statz) | #1, Főfasz (10443) |
800 | #2109 | ^ | Idézet | Tue, 23 Oct 2012 18:11:17 +02 |
31.46.*.* | *.catv.pool.telekom.hu |
Ez mondjuk igaz. :) Már, ha C-t használsz és nem C++-t, ugye? Vagy C++-ban is konvertiren? Na, most már én is ki fogom próbálni ezt a cézést binguzon. (Meg en-bloc.) Hogyhogy? Lazarusban, Delphiben bezáródik, ha rábökök az OK vagy a kancsal gombra. Meg ott annyi az egész, hogy If dialog_neve.Execute Then Begin és kinyitja, valamint csak akkor mászik be a lefuttatandó kódba, ha az OK-ra nyomtál (vagy ekvivalens műveletet végeztél, duplaklikk, ritörn, estébé). |
kemi (statz) | #2, Főfasz (2970) |
1485 | #210a | ^ | Idézet | Tue, 23 Oct 2012 18:35:55 +02 |
92.249.*.* | *.pool.digikabel.hu |
C++ C-ben nem láttam még Qt kódot, viszont GTK-hoz nincs hivatalos C++ interfész. Itt ha megbököd valamelyik gombot akkor visszaad egy response-t, de nyitva marad az ablak, amíg ki nem törlöd. Lehet olyat csinálni. A deklarációnál meg kell adni milyen gombok legyenek rajta, és megnyomáskor mit adjon vissza. Akkor lehet ilyet csinálni, hogy beállítod, hogy a megnyitás 1-et a mégse 0-t adjon vissza, de én ragaszkodtam a standardhoz: GtkWidget* opendialog = gtk_file_chooser_dialog_new("Input file", GTK_WINDOW(window), //hívó ablak GTK_FILE_CHOOSER_ACTION_OPEN, //fájlmegnyitó dialógusablak legyen GTK_STOCK_OPEN, 1, //A GTK_STOCK_OPEN az éppen használt nyelv "megnyitás" stringjét rakja a gombra, ha ráklikkelsz 1-et ad vissza GTK_STOCK_CANCEL, 0, //ugyanaz mégsére, 0-t fog visszaadni NULL); //listaterminátor if (gtk_dialog_run(GTK_DIALOG(opendialog))) { . . . } |
TCH (statz) | #1, Főfasz (10443) |
517 | #210b | ^ | Idézet | Tue, 23 Oct 2012 22:05:19 +02 |
31.46.*.* | *.catv.pool.telekom.hu |
De neked egyébként most nem egy C++ beadandót kellett volna csinálni? Akkor a C++/Qt jobban passzolt volna, nem? :] És nem lehet csak simán bezárni pl. close_dialog(faszom) paranccsal, muszáj törölni? Ok, point taken. |
kemi (statz) | #2, Főfasz (2970) |
596 | #210c | ^ | Idézet | Tue, 23 Oct 2012 22:56:47 +02 |
92.249.*.* | *.pool.digikabel.hu |
Az, de C++-ból simán lehet hivogatni a C-s rutinokat. Randán néz ki, de a Gtk-t így lehet megszólítani C++-ból a legegyszerűbben. http://ubuntuforums.org/showthread.php?t=722111 Van hide ami elvileg csak simán eltünteti, de így volt a tutorialban. :P Meg szerintem memóriakihasználás szempontjából is jobb. Ha már úgyse használod többet, miért ne lehetne törölni? C-ben nincs szemétgyűjtő. |
TCH (statz) | #1, Főfasz (10443) |
582 | #210d | ^ | Idézet | Wed, 24 Oct 2012 00:04:27 +02 |
31.46.*.* | *.catv.pool.telekom.hu |
Ja értem. Dehát használod! Ha legközelebb megint arra a gombra bök, akkor megint fel kell, hogy jöjjön a dialógus; akkor megint létre kell hozni; nem egyszerűbb meghagyni és csak show/hide? Ha állandóan ugyanazt allokálod, meg szabadítod fel, az sem túl memóriabarát és még lassabb is. :P |
TCH (statz) | #1, Főfasz (10443) |
2134 | #210e | ^ | Idézet | Wed, 24 Oct 2012 16:35:19 +02 |
80.99.*.* | *.catv.broadband.hu |
Ez bazdmeg...ezt nem is hiszem el!XDDDDDDDDDDDDDDDDDDDDDDDDDD NÓFAKINKOMMENTBAZDMEG!!! XDDDDDDDDD Hát mi van abban a winfosban, ami 12 gigát eszik?! XDDDD Ja, tudom: SEMMI XD Dettó ugyanaz, mint amit egy tesztben olvastam, hogy a Suse is 10 gigát evett meg, meg a wista is, de a wistán utána bámulhattuk az asztalt, míg a Suse-hoz adtak egy komplett szoftverparkot, a 3D modellertől kezdve a rajzolóprogramon, böngészőn, levelezőn, videovágón és irodai csomagon át a videólejátszóig minden lófaszt. Ennyi. Vagy ha nagyot akarnék mondani, akkor QED. winfossux. |
kemi (statz) | #2, Főfasz (2970) |
467 | #210f | ^ | Idézet | Wed, 24 Oct 2012 16:40:03 +02 |
193.224.*.* | *.uni-obuda.hu |
Ez igaz. Akkor viszont a dialógusok deklarációját átrakom a main()-be, a gomb eseménykezelőjébe meg csak megjelenítés/elrejtés lesz. így szebb is lesz a kód. :) Köszi. |