Portál AbcLinuxu, 6. května 2025 02:39
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?
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.
A proč ne raději glib?
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).
On tu nějaký článek o Gtk+ je?
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 :)
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í?Dík, Venca
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.
Ř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...)
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á.
To je argument jak prase...
že gtk+/glib je líp navrženaje argument ještě lepší
Ano, to totiž argument je. Glib můžu použít v konzolové aplikaci na systému bez X11 + gtk+...
A před tím snad nebylo rozumně licencováno? (GPL)
hm, myslel som ze qt gui bezi aj na platformach, ktore Xka vobec nepoznaju... hm, co sa tu dnes nedozviem :)
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ě"?
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");
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í.
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á :(
Potreba X11 se da "obejit" pouzitim Xvnc nebo Xvfb. Dalsi zpusob je opatchovat Qt jak to dela napr. http://code.google.com/p/wkhtmltopdf/
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.