Portál AbcLinuxu, 6. května 2025 02:39

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
10.7.2009 00:48 __
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Odpovědět | Sbalit | Link | Blokovat | Admin
Includovat v C++ pouze same hlavickove soubory z C, s jedinou vyjimkou (QT4) jasne ukazuje ze pouzivat C++ pro tvorbu programu pro SHELL je spatne. Pouzivat navic jeste QT4 pro text-mode programy je jeste vice spatne. Spravne by se melo pouzit treba glib a kod by mel byt C99 ci GNU99.
David Watzke avatar 10.7.2009 00:52 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Kde includuju hlavičkový soubory z C?
Pouzivat navic jeste QT4 pro text-mode programy je jeste vice spatne.
Jakto?
Spravne by se melo pouzit treba glib a kod by mel byt C99 ci GNU99.
Řekl kdo? :-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
10.7.2009 08:17 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
To nic, jeden z dalších fanatiků. On asi myslel tvůj "process.h" :-)
10.7.2009 11:55 Dvorak
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

Toto by profesionální programátor nikdy neřekl.

I v konzolových aplikacích je potřeba spousta věcí jako networking, XML processing, regexp, threads,a dalsí a další, pro které má QT výbornou podporu (multiplatformově).

Navíc, objektové programování je jasná cesta ve většině jazyků. Proto dnes prosazovat čisté cécko zda se být prochu mimo.

 

Petr Tomášek avatar 10.7.2009 12:29 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

A proč ne raději glib?

multicult.fm | monokultura je zlo | welcome refugees!
10.7.2009 14:29 Lojza
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

 Protože je to článek o QT, ne?  Taky se v diskuzi pod článkem o gtk+ budete ptát, proč nepoužít raději GLib? POkdu tomu rozumíte, tak sem rovnou napište důvody k upřednostnění GLib a pokud jenom z nudy machrujete, tak jsem na vás ztratil čas (což mě mrzí. ale neomlouvám se).

Petr Tomášek avatar 10.7.2009 15:18 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

On tu nějaký článek o Gtk+ je?

multicult.fm | monokultura je zlo | welcome refugees!
Max avatar 10.7.2009 18:08 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Buď vůbec nechápeš, na co reaguješ, nebo máš potřebu reagovat a tak musíš plácnout i sebevětší kravinu, jelikož nemáš žádné rozumné argumenty ;-).
Zdar Max
Měl jsem sen ... :(
andree avatar 12.7.2009 21:27 andree | skóre: 39 | blog: andreeeeelog
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

hmm, tak to vela stastia, az budes chciet nakodit konzolovy renderer napr. html+css, alebo nejaku corba aplikaciu :-) verim, ze ti vtedy nejaka ta "spatnost" da dostatocny dovod, preco napisat 10x viac kodu, a umerne viac dokumentacie a chyb :)

10.7.2009 08:49 vencas | skóre: 32
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Odpovědět | Sbalit | Link | Blokovat | Admin
  1. Je možné vytvořit v qt4 konzolovou aplikaci, která si pak může, pokud to potřebuje, otevřít nějaké okno, pak ho zase zavřít, normálně pokračovat jen v konzoli atd? V qt3 to dělám tak, že program běží na konzoli zcela bez qt, pak v určitou chvíli zavolám XInitThreads(); app=new QApplication(0,NULL);, vyhodí to sice varování QApplication: invalid Display* argument, ale pak normálně funguje. Má na to qt4 nějaké čisté řešení?
  2. Pokud qt4 defaultně používá evenloop z glib, dá se pak udělat, že by si ten zpočátku konzolový program otvíral okna qt+gtk(+tk z nějakých starých python skriptů) mixovaně a fungovalo by to?

Dík, Venca

David Watzke avatar 10.7.2009 11:25 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
1) Nikdy jsem to nezkoušel, ale když se nad tím zamyslím, tak můžeš zkusit vytvořit QApplication hned na začátku, jako bys to udělal v grafickém programu a potom prostě něco provádět a zavolat show() na nějakej widget (okno) až když ho budeš chtít zobrazit. Budeš si u toho okna asi muset reimplementovat closeEvent() nebo tak.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
10.7.2009 11:42 mikro
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

ide to este jednoduchsie -- ako vravis, cesta je cez klasicke QDialog::show() miesto exec() + treba nastavit, nech sa aplikacia neukonci po zavreti posledneho okna, tusim to je v QApplication triede alebo nejakych global flagoch.

David Watzke avatar 10.7.2009 11:57 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Dá se to nastavit přes QApplication property quitOnLastWindowClosed.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Petr Tomášek avatar 10.7.2009 15:19 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

Řešením je použít glib a vůbec se Qt nezabývat... (mimochodem, na tom vidíte, že gtk+/glib je líp navržena, než celá slavná Qt, prostě nikoho nenutí používat X-y...)

multicult.fm | monokultura je zlo | welcome refugees!
10.7.2009 15:27 Mark
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

Ha. Vieš na čom je najlepšie vidieť, že gtk+/glib je lepšie navrhnutá než celá slávna Qt? Na tom, že ma dlhší názov. 9-2=7, takže gtk+/glib musí byť 7 krát lepšie navrhnutá.

Fluttershy, yay! avatar 10.7.2009 16:49 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Vždyť je to zlomek a 'g' se vykrátí...
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
10.7.2009 21:44 Mark
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

:-D

10.7.2009 15:30 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Děláte ze sebe jenom vola
Petr Tomášek avatar 10.7.2009 15:32 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)


To je argument jak prase...

multicult.fm | monokultura je zlo | welcome refugees!
10.7.2009 15:41 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
že gtk+/glib je líp navržena
je argument ještě lepší
Petr Tomášek avatar 10.7.2009 15:44 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

Ano, to totiž argument je. Glib můžu použít v konzolové aplikaci na systému bez X11 + gtk+...

multicult.fm | monokultura je zlo | welcome refugees!
10.7.2009 15:55 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
QtCore taky, dál?
10.7.2009 17:37 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
When your hammer is C++, everything begins to look like a thumb.
Max avatar 10.7.2009 18:12 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Nu, vzhledem k tomu, že už je rozumně licencováno, tak už to asi neplatí, ne?
Zdar Max
Měl jsem sen ... :(
xkucf03 avatar 17.7.2009 11:38 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše GPL licence

A před tím snad nebylo rozumně licencováno? (GPL)

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
10.7.2009 18:19 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
LOL +1, toto jsem četl poprvé:)
andree avatar 12.7.2009 21:24 andree | skóre: 39 | blog: andreeeeelog
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

hm, myslel som ze qt gui bezi aj na platformach, ktore Xka vobec nepoznaju... hm, co sa tu dnes nedozviem :)

Fuky avatar 12.7.2009 12:06 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

QApplication: Invalid Display* argument

A je nějaké rozumné odůvodnění předchozí hlášky v případě, že argc = 0, argv = NULL? Nějakou diskuzi jsem našel, ale nic rozumného z ní nevyplynulo. V GTK lze použít gtk_init(NULL, NULL); v Qt se zbavuju otravné hlášky:

int argc = 1;
char *argv[1];
QApplication app(argc, argv);

Jak to řešit "čistě"?

Fuky avatar 12.7.2009 12:14 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

Už vím, předpokládal jsem, že volám:

QApplication ( int & argc, char ** argv )

Ale z app(0, NULL); usoudil kompilátor, že chci volat:

QApplication ( Display * dpy, HANDLE visual = 0, HANDLE colormap = 0 )

Viz ./gui/kernel/qapplication.cpp:

    if (! dpy)
        qWarning("QApplication: Invalid Display* argument");

12.7.2009 23:42 vencas | skóre: 32
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

Huráá, super, díky!! Podařilo se mi to očůrat takhle:

int argc=0;
app=new QApplication(argc,(char**)NULL);

Tím se vybere ten správný overload a varování se nezobrazí.

10.7.2009 09:47
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Odpovědět | Sbalit | Link | Blokovat | Admin
skrytý komentář Náš administrátor shledal tento komentář závadným.

vulgární

Zobrazit komentář
mirec avatar 10.7.2009 12:47 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
Odpovědět | Sbalit | Link | Blokovat | Admin

Minule som sa pokúšal urobiť aplikáciu schopnú vyrenderovať HTML stránku a exportovať ju do PDF. Je možné používať QPainter aj bez GUI? Neviem prečo, ale keď som nemal zobrazené žiadne okno aplikácia vždy havarovala. Pritom nepotrebujem QPainter použiť na vykresľovanie okna, ale iba na vykreslenie do súboru ...

A ešte jedna drobnosť, neviem či poznáte knižnice ako Turbo Vision. Bolo by krásne ak by niektoré GUI prvky (základné) fungovali aj v konzole (niečo ako ncurses s tým, že by aplikácia nebežiaca v X zobrazila jednoduché rozhranie skladajúce sa z ASCII znakov). Žiaľ Qt je zamerané len na klasické okná :(

LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
11.7.2009 12:18 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
QPainter je soucasti modulu QtGui, takze s cistym QtCore pouzit nejde. Samotne kresleni "do souboru", t.j. na jakykoliv podporovany "device" lze kreslit bez oken. Akorat musi existovat instance QAppliaction.
Kuolema Kaikille (Paitsi Meille).
David Watzke avatar 11.7.2009 12:39 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
A QtGui potřebuje X server (i když v tomhle případě nemusí běžet), takže třeba na serveru to je fakt radost...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
limit_false avatar 13.7.2009 15:13 limit_false | skóre: 23 | blog: limit_false
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)

Potreba X11 se da "obejit" pouzitim Xvnc nebo Xvfb. Dalsi zpusob je opatchovat Qt jak to dela napr. http://code.google.com/p/wkhtmltopdf/

When people want prime order group, give them prime order group.
mirec avatar 11.7.2009 14:18 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Konzolové programy v Qt 4 – 1 (úvod)
No kreslenie funguje kým nepoužijem fonty. U fontov využíva niečo z X aj keď kreslí do súboru :(
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
11.7.2009 00:23 limit_false
Rozbalit Rozbalit vše Pozor na fork()
Odpovědět | Sbalit | Link | Blokovat | Admin
S "textovym" Qt nejde moc dobre psat daemony, ktere se potrebuji fork()-nout na pozadi. (I kdyz platformne nezavisle wrappery jako QTcpSocket mohou navadet k tomu psat neco takoveho. BTW QTcpSocket je taky plny prekvapeni, hlavne signaly v neocekavanou dobu.)

U libICE existuje race condition, ktera zpusobi ze libICE po forknuti programu zacne psat do spatnych socketu (a program spadne). Tenhle race condition sa neprojevi vzdy, jenom na nekterych systemech. Je samozrejme mozne skompilovat Qt bez podpory libICE, ale pokud vim je to vzdy by default zapnuto na vsech distribucich.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.