PDA

Prikaži potpunu verziju : Qt creator


Night Walker
9.12.2012, 17:54
Izgleda da postoji problem u mojim podesavanjima, valjda treba u Tools>Options>Build&Run>Kits nesto da se podesi ali neznam kako i sta?
Ima li ovde neko upucen u to?

Futuristic
9.12.2012, 21:48
Evo i ja sam upravo sada skinuo Qt Creator.
Na stranici downloads na njohovom site-u, ima da se izabere za downloads RC package, library i qt creator. Neko je u nekoj od ovih tema postovao yt playlistu gde su qt tutoiali, i na osnovu toga sam krenuo da skinem qt.

Buduci da su snimci 1 god stari, na qt site-u stvari nisu vise iste. Treba da skinem SDK a toga nema, nego samo ono sto sam napisao gore. Posto sam skinuo qt creator isto zapnem kad hocu da napravim project, kad dodjem do prozora sa tim "Kits" sto pominjes, pa i mene zanima kako da resimo problem, tj. prvenstveno sta treba da skinem?

EDIT: U ovoj temi je prethodno pominjan qt http://www.sk.rs/forum/showthread.php?t=84435

Futuristic
9.12.2012, 22:38
Skinuo sam onaj RC package, koji u sebi sadrzi i qt creator. Izgleda da ako skines samo qt creator, skinuo si samo IDE i nista vise... Na sajtu kad su napisali SDK (sadrzi kompletno okruzenje (development environment)) izgleda su mislili na taj RC package, stagod RC znacilo.... Tako da izgleda da je taj RC package ono sto ti treba, u slucaju da si se zeznuo kao ja pa skinuo samo IDE

Neky
9.12.2012, 23:12
Koristim Qt, međutim na Linuxu tako da dobijem gotov paket, odnosno ne skidam ništa sa sajta.

Od skora je Digia preuzela razvoj Qta, pa moguće da zbog toga ima nekih problema.

Futuristic
10.12.2012, 23:26
Au, i ja sam se debelo negde zapleo. Molim pomoc, sta tacno da skinem sa njihovog sajta...

ivan90BG
11.12.2012, 0:26
Izgleda da su se stvari promenile od kad sam poslednji put skidao Qt SDK. Do pre nekoliko meseci je postojala jedna instalacija koja je sadržala Qt biblioteke i Qt Creator. Sada su to odvojene instalacije.

Nemojte ići na sajt koji vam Google da prvi, to je sajt namenjen komercijali, nego na http://qt-project.org (to je sajt open source projekta) pa na download. Tu imate dve liste, prvo Qt biblioteke, a ispod nje Qt Creator. Najnovija stabilna verzija Qt biblioteke je 4.8.4 (a ima i 5.0 RC1), savetujem vam da skinete verziju za Windows sa MinGW kompajlerom, što je u svari GCC, one druge dve zahtevaju Visual Studio (ne znam kako stoje stvari sa verzijom 5, pretpostavljam da dolazi sa GCC-om jer je pravljena za C++11, a samo VS2012 ga podržava, mada mislim da može i bez C++11). A za Qt Creator je jasno (2.6.0 za Windows).

M.Silenus
11.12.2012, 0:44
Qt SDK se još uvek može skinuti sa Nokia-inog sajta (link (http://www.developer.nokia.com/info/sw.nokia.com/id/da8df288-e615-443d-be5c-00c8a72435f8/Qt_SDK.html)). Uz ovu verziju dolaze Qt 4.8.1, MinGW GCC 4.4 i Qt Creator 2.4.1. Nije baš najsvežije, ali funkcioniše.

Inače, negde sam video da se sprema open source varijanta SDK-a, trebalo bi da dođe nakon što se izda Qt 5 (ne release candidate verzija koja je trenutno dostupna). Ja bih svejedno sačekao neko vreme da se srede inicijalni problemi sa peticom.

ivan90BG
11.12.2012, 9:59
Qt je open source pod GPL-om već godinama (a od skora je i pod LGPL-om), ja sam više puta skidao source da nešto istražujem. Ima na sajtu http://qt-project.org/downloads linkovi ka source-u, samo treba malo da se potraže, sitni su.

Futuristic
11.12.2012, 14:39
Izvinjavam se ako su pitanja malo debilna, ali u cemu je razlika izmedju npr.
Qt libraries 5.0 RC 1 for Windows (419 MB) i Qt libraries 4.8.4 for Windows (minGW 4.4, 317 MB) ?
Sta uopste znaci RC? Da li mi ista treba pre nego sto instaliram bilo koje od ova dva? Ne razumem se bas, pre je izgleda bio samo jedan link oznacen kao software development kit i unutra time je valjda bilo sve obuhvaceno sto treba za rad...

ivan90BG
11.12.2012, 15:16
Još uvek nije izašla finalna verzija 5, nego je još uvek u fazi RC (release candidate).

Ako klikeneš na link za download (za Qt 5 RC1) i pročitaš naziv fajla koji se skida videćeš da se pominje msvc2010, što znači da zahteva Visual Studio 2010 (odnosno da se ne dobija GCC (MinGW)). Ako nemaš Visual Studio 2010 nemoj to da skidaš onda.

bvitnik
11.12.2012, 15:17
Izvinjavam se ako su pitanja malo debilna, ali u cemu je razlika izmedju npr.
Qt libraries 5.0 RC 1 for Windows (419 MB) i Qt libraries 4.8.4 for Windows (minGW 4.4, 317 MB) ?
Sta uopste znaci RC? Da li mi ista treba pre nego sto instaliram bilo koje od ova dva? Ne razumem se bas, pre je izgleda bio samo jedan link oznacen kao software development kit i unutra time je valjda bilo sve obuhvaceno sto treba za rad...

RC je Release Candidate. Nije finalna vezija. Finalna verzija 5.0 treba uskoro da izađe. Razlike između 5.0 i 4.8 su značajne, mada 5.0 očuvava kompatibilnost sa 4.8. Ako tek krećeš sa programiranjem u Qt-u, ne vidim razlog da ne kreneš sa 5.0 jer će u narednim godinama to biti aktuelno a ti treba da se navikneš na novotarije u 5.0.

Futuristic
11.12.2012, 15:52
Hvala svima na odgovorima, evo izgleda nabasah na moguce isti problem za koji je Night Walker pitao, instalirao sam v5.0 i kad treba da kompajliram, ne prodje, a u Options > build&run > qt versions pise mi "No compiler can produce code for this qt version, please define on or more compilers. Zar nije u nistalaciji bilo sve potrebno?
EDIT : Au Ivane, ja potpuno prevideh tvoj post, sad mi je jasno sto ne radi, ali ne u potpunosti:) Naime, ja nemam visual studio, ali imam MinGW ondosno GCC, iz codeblocks instalacije, koje mi je qt u options i detektovao, ali ipak ne radi...

ivan90BG
11.12.2012, 16:43
Pa šta imaš na tabu Compilers.

Ako si skinuo Code Blocks skoro onda imaš GCC 4.7 koji je valjda dovoljan za Qt 5.

Futuristic
11.12.2012, 17:03
U compilers tab kaze:
Auto-detected MinGW (x86 32 bit) minGW
Manual GCC

EDIT : Hm, kako tumacis ovu gresku ?

M.Silenus
11.12.2012, 18:33
@Futuristic

Skinuo si verziju biblioteka za Visual Studio 2010, a gcc ne može da radi sa njima.

Sa MinGW-om trenutno ima nekih problema. Imam instaliran mingw gcc 4.7.2 (rubenvb std::thread varijantu - zbog C++11). Skinuo sam Qt 4.8.4 za MinGW i Qt Creator 2.6, i Qt Creator se uporno buni. Čak i kada sam uspeo da kompajliram jednostavan Qt program, dotični pukne pri pokretanju...

Možeš da potražiš MinGW gcc 4.4 negde, ali ako nisi naročito vezan za taj kompajler, zašto ne bi instalirao Visual Studio 2010 Express (ako još uvek može da se nađe).

ivan90BG
11.12.2012, 21:08
Zanimljivo, i moja prva pretpostavka je da su Qt 5 biblioteke za Windows kompajlirane sa MSVC2010 pa zato mora sa njim da se kompjaliraju i programi koji hoste te biblioteke. Ali da sam GCC ne valja, to mi je jako čudno. :eek:

M.Silenus
11.12.2012, 21:41
Ima na ovoj strani (http://qt-project.org/wiki/MinGW-64-bit) uputstvo kako izbildovati Qt5 koristeći mingw gcc 4.7.2 (32 bit ili 64 bit). Probaću da izbildujem celu stvar sutra. Javljam kako je prošlo.

Futuristic
11.12.2012, 22:53
Ok, sad bar znam u cemu je problem, hvala na objasnjenju. Ne razumem se toliko u kompajlere da bih tacno shvatio sta je na tom linku sto si poslao, M.Silenus...
Da li pod stavkom prerequisites moram da imam sve one stvari? Ako je tako, ne bi mi se dalo da skidam sijaset stvari da bi qt proradio. U svakom slucaju, prociatacu uputstvo nanovo... ili da sacekam da izadje nova verzija :)
Btw. da li je qt uopste pravljen da radi sa gcc-om, posto postoji ta verzija biblioteka za vs?

pivonroll
12.12.2012, 2:01
Uz Qt 5.0 instalaciju za windows dolazi i Qt Creator koji treba koristiti sa njim. Ako ste instalirali neki drugi Qt Creator i pokusali da ga koristite sa Qt 5.0 velika je sansa da cete dobiti poruku da ne moze da nadje potreban kompajler MS VS 2010 iako ga imate uredno instaliranog. Nisam istrazivao zasto ali eto cisto da znate.

Futuristic
11.2.2013, 11:52
Ima li ikakav način da postavim da se u QLineEdit unose samo oktalni brojevi?
Pogledao sam u help i daje opciju za binarne, heksadekadne vrednosti(koje sam podesio preko setInputMask), ali nigde za oktalne.
I drugo pitanje bi bilo, kako da pokrenem .exe file moje aplikacije? Traži određene dll-ove koji se nalaze u Qt foldleru. Dakle, kako bih pokrenuo .exe fajl, odnosno kad bih hteo nekom poslati, a da mu ne šaljem silne dll-ove ili šta vec.

ivan90BG
11.2.2013, 12:42
Vrlo lako možeš sam da implementiraš proveru "oktalnosti". Oktalni brojevi imaju cifre od 0 do 7, stim da oktalni broj može da počinje jednom nulom. Posle lako možeš da ga konvertuješ u integer (čini mi se da Qt već ima podršku za to).

A što se ti če dll-ova, postoje dve mogućnosti. Prava je da uz tvoju aplikaciju idu i potrebni Qt dll-ovi u istom folderu. Druga opcija je da svoju aplikaciju linkuješ statički (to je u suštini kopiranje potrebnog koda iz biblioteka u sam exe fajl). Ali ti za ovo trebaju statičke verzije Qt bibliteka (ne .dll nego .lib). Ali mislim da postoje neke začkoljice u Qt licencama koje te sprečavaju na ovo. Morao bi da proučiš LGPL i GPL licence da bi bio siguran šta se sme a šta ne. Pa ti je stoga najbolja prva opcija da šalješ i dll-ove uz exe fajl (to se sme po LGPL i GPL licenci).

voodoo_
11.2.2013, 13:11
Je l' postoji neki zvanični Qt Redistributable paket koji sme da se distribuira kao setup uz aplikaciju (kao npr. što postoji Visual C++ 20xx redist za dinamički linkovane programe)?

Futuristic
11.2.2013, 13:31
@ivan90BG
Ima funkcija koja tekst iz QLineEdit-a pretvara u broj u odg. osnovi ali meni treba restrikcija da u taj edit mogu samo da se upišu brojevi od 0 do 7 i ništa više.
Sa slike se vidi da nema opciju za oktalni.
A za .exe, prekopirao sam ga u drugi folder i poubacivao sve .dll-ove koje je tražio, i onda izbaci sledeću poruku(slika).

@voodoo_
Šta su ti redistributable paketi? Kad otvorim add or remove programs vidim gomilu tih redistributables. Za šta služe, smeju li se brisati?

Neky
11.2.2013, 13:58
QLineEdit ima metodu .setValidator, u PyQtu se koristi ovako:

validator = QtGui.QIntValidator()
self.ui.lineKolicina.setValidator(validator)

a ako hoćeš da ga dodatno ograničiš na određeni opseg, samo mu proslediš parametre ovako:

validator = QtGui.QIntValidator(0,7,self).

:edit:

evo i primer za C++

http://stackoverflow.com/questions/13422995/set-qlineedit-to-accept-only-numbers

Futuristic
11.2.2013, 15:06
Hvala, ja sam pobrkao stvari. setBottom i setTop funkcije odredjuju maksimalnu brojevnu vrednost, a minimum i maximum u kom rasponu cifre mogu da se unesu.
Tako da ako hocu da se u QLineEdit unose oktalni brojevi u opsegu 0-100 (oktalno):
QIntValidator *val = new QIntValidator(0,7);
val->setBottom(0);
val->setTop(100);
ui->lineEdit->setValidator(val);;

ivan90BG
11.2.2013, 16:53
U suštini ne postoji instalacija Qt-a koja ima samo gole biblioteke (ala Redistributable). Na Linux-u ima paket menadžer koji sve rešava. Na Windows-u moraju i Qt dll-ovi (ali samo oni potrebni) da budu deo instalacije, ili bi možda instalacioni program mogao da pretraži neke karakteristične foldere na računaru da vidi da li možda već ima Qt dll-ova, pa da njih iskorsiti, mada nisam siguran u pouzdanost te varjante, jer ko zna da li su kompjalirani sa MSVC ili sa GCC, da li imaju omogućene exception-e i koju vrstu (dwarf, seh ili sjlj). Tako da je najbolje da aplikacija uvek koristi one dll fajlove sa kojima je kompajlirana -> znači pakovati dll-ove sa aplikacijom.

E sad nevolje kod kopiranja u drugoi folder. Kad se exe linkuje on u sebi ima reference na dll-ove, ali kakve reference?. Možda ima apsolutne putanje do dll-ova, a možda su relativne. Ako su relativne onda neće moći da ih nađe kad pomeriše exe na drugo mesto. Exe mora biti linkovan sa dll-ovima koji se nalaze u folderu u koji ga kompajler izbaci (pa onda svi zajedno mogu da šetaju). Pretpostavljam da qmake ima neke opcije za deployment, odnosno da automatski kopira potrebne dll-ove u isti folder sa exe-om.

Ovde -> http://stackoverflow.com/questions/8391964/how-to-copy-qt-runtime-dlls-to-project-output imaš neke tehnike automatizacije ovog procesa preko qmake-a (odnosno pisanja u .pro fajl tvog projekta). A ona poruka o grešci samo znači da je pozvana funkcija abort() i ništa više, ko zna šta je bilo.

Futuristic
21.2.2013, 16:58
Kako da iz dialog prozora putem neke funkcije pri zatvaranju istog prosledim vrednost nazad u mainwindow?

voodoo_
21.2.2013, 22:57
http://doc.qt.digia.com/stable/qdialog.html#exec

Futuristic
26.2.2013, 23:59
Da li u qt-u pri pristupu fajlovima i citanje istih treba da se citaju u malim chunkovima(npr. 4kB) ili to kod njega nije slucaj? I moze li neko da objasni sta koristiti, QFile, QDevice,QIODevice, ne razumem sta za koji dodje...
Pokusavam da neki program sto sam radio u C-u napisem u qt pa ne znam koji pristup uzeti. Npr. za citanje fajlova ima read raw data, read binary itd. pa me pomalo buni.
Hvala unapred.

ivan90BG
27.2.2013, 10:43
Za pisanje i čitanje iz fajlova ti treba QFile, a QIODevice je abstraktna nadklasa (QDevice ne postoji). Ali što se tiče čitanja i pisanja QFile radi samo sa nizovima bajtova (char*) i QByteArray, odnosno na niskom nivou. Ako treba da čitaš ili upisuješ tekst, onda ti treba QTextStream (kome daješ QFile u konstruktoru) ima operatore << i >> za sve tipove podataka koje konvertuje u tekst pri pisanju i nazad pri čitanju, a ako hoćeš da upisuješ binarne podatke (brojeve) imaš QDataStream koji takođe ima operatore << i >> za sve tipove brojeva.

Dokumentacija: QIODevice (http://qt-project.org/doc/qt-5.0/qtcore/qiodevice.html), QFile (http://qt-project.org/doc/qt-5.0/qtcore/qfile.html), QTextStream (http://qt-project.org/doc/qt-5.0/qtcore/qtextstream.html), QDataStream (http://qt-project.org/doc/qt-5.0/qtcore/qdatastream.html).

pivonroll
28.2.2013, 22:23
Je l' postoji neki zvanični Qt Redistributable paket koji sme da se distribuira kao setup uz aplikaciju (kao npr. što postoji Visual C++ 20xx redist za dinamički linkovane programe)?

Ne postoji. Zasto? Zato sto Qt moze biti build-ovan sa raznim kompajlerima i raznim mkspec podesavanjima. Zbog ovoga nemoguce je da se obezbedi univerzalni redistributable. Zato moras sam da distribuiras Qt dll-ove od kojih zavisi tvoja aplikacija. Pogledas koji Qt koristis, gde se nalazi i samo iskopiras dll-ove u isti folder gde je .exe tvog programa.

Ako hoces da ih automatski iskopiras pri build-ovanju dodaj ovo u tvoj .pro fajl (ovo je primer kako da iskopiras QtCore.dll)

QMAKE_POST_LINK += $$QMAKE_COPY $$[QT_INSTALL_LIBS]/QtCore.dll $$DESTDIR

Teva
1.3.2013, 14:42
Aj čisto da pitam, jel ima neko ideju kako bih mogao Qt(QML il bilo šta što spada u Qt) mogao da integrišem sa nekim pseudokodom?

Ideja je da mi se objekti pomeraju levo desno u zavisnosti od koda koji mu ja unesem (kao korisnik). Pseudokod bi bio neki mini "jezik" koji bi ja definisao :)

ivan90BG
1.3.2013, 22:15
Termin "pseudokod" podrazumeva kod koji nije napisan ni u jednom programskom jeziku. :)

Ono što ti tražiš je da omogućiš skriptovanje u tvojoj aplikaciji. Kada bi sam implementirao to što si rekao trebao bi minimum da napišeš parser, semantički validator, i nekakav engine koji bi to izvršio. U zavisnosti od toga kolike mogućnosti misliš da daš tom jeziku (da li će svi aspekti biti potpuno fiksirani ili će imati nekakvu ekstenzibilnost) ovo pisanje od nule može da ispadne sasvim lako i zanimljivo, a može i da ispadne vrlo obimno.

Ako ne želiš da se upuštaš u to, Qt već ima ono što ti treba, a to je JavaScript engine (JavaSriptCore). Pogledaj dokumentaciju, počni od QJSEngine (http://qt-project.org/doc/qt-5.0/qtqml/qjsengine.html) klase (ona je deo QtQml modula)

U kratko on ti obezbeđuje parsiranje, validaciju koda, kompajliranje, ti treba samo da napraviš okruženje, a to znači da treba da definišeš objekte koji će biti dostupni iz JavaScript koda, koje će metode i property-e da imaju (to sve definišeš u C++ kodu, kod metoda takođe pišeš u C++-u). Onda mu samo daš kod koji je korisnik ukucao da ga evaluira, i tada će engine zvati tvoje C++ metode.

voodoo_
1.3.2013, 22:28
Ili da integrišeš Python ili Perl interpreter :)

ivan90BG
1.3.2013, 23:31
^He, nisam znao da Python već ima sve sređeno za embed-ovanje. To je odlična mogućnost.

bvitnik
2.3.2013, 0:26
Može i Lua.

Teva
2.3.2013, 10:18
Znam šta je pseudokod xD Zato sam i napisao jer ja hoću da definišem neku vrstu jezika sa veoma malim brojem komandi (plus kontrola toka).

Nije mi bitno za sad kako će da se skriptuje (drilovali su me sa prevođenjem jezika prošli semestar, tako da ću lako da napišem parser).

Pretpostavimo da je za početak neki skript jezik u pitanju.
Interesuje me jel postoji mogućnost da ja kucam u tom skriptu recimo listu i par komandi za brisanje čvora il čega već, a da u drugom prozoru meni crta povezane kružiće i eventualno neku animaciju?

ivan90BG
2.3.2013, 10:48
Ako ti definišeš jezik i napiše parser i interpreter, onda nije više pseudokod, tada je postao pravi jezik. :)

Elem, naravno da može, to možeš i sa QJSengine, i sa Python-om, kao što sam rekao engine zove funkcije i metode koje su deo koda aplikacije, one mogu da rade bilo šta, znači mogu da rade nešto sa GUI-jem. Ako me moći prozrevanja ne varaju :D, ti hoćeš da napišeš edukativnu aplikaciju koja će grafički da demonstrira internalije tipičnih struktura podataka i algoritama, i to preko tekstualnih komandi (što bi mnogim studentima dobro došlo). Pa ako se taj mini jezik koji imaš na umu sastoji od fiksnih komandi, a ti već znaš kako da napišeš lexer-parser, možeš onda to i sam da napraviš.

Za svaku komandu češ imati po jednu funkciju ili metod koji će da radi tu operaciju na GUI-ju koju treba. Kad korisnik odkuca listu komandi, program parsira, proveri da li je svaka komanda validna, u isto vreme se komande konvertuju u neku među forumu (koja se recimo sastoji od opcode-ova i argumenata) i onda kreneš da ih izvršavaš (za svaku komandu pozivaš odgovarajući metod). Blo bi dobro da te metode bacaju izuzetke i da imaš brojač komandi, da bi mogao da uhvatiš i izbacih korisniku runtime greške sa brojem komande (recimo da rekonstruišeš tekstualnu komandu iz među forme, ili da imaš debug informacije u vidu asocijacije brojeva redova u tekstualnom fajlu i pozicije u među formi).

A ako hoćeš baš da se otegneš :D, možeš da probaš sa JIT kompajliranjem. Verovatno znaš za LLVM biblioteku. Umesto da tokom parsiranja praviš svoju međuformu, samo gradiš LLVM funkciju, onda je kompajliraš, dobiješ jedan pointer i pozoveš ga.

pivonroll
7.4.2014, 1:36
Pozdrav svima:
Napravio sam plugin za Qt Creator koji iscrtava drvo include-ova.
Dvoklik na item prikazuje/skriva koji su sve fajlovi include-ovani iz njega.
Pokrecete ga tako sto iz Tools menija i odaberete Display include tree, precica je CRTL+ALT+I (slovo i :))
Napomena: Morate imati fajl otvoren u editoru za sada. Kasnije cu dodati da se opcija prikazuje i u kontekstnom meniju za fajlove.
Download je trenutno na mom GitHub-u: https://github.com/pivonroll/Qt-Creator/tree/include_graph
Jedna slicica: