[QGHG-it-dev-list] Zadatak 6 - konstruisanje GUI-ja

Marko Vojinovic vmarko at ipb.ac.rs
Fri May 27 23:07:57 CEST 2022


Pozdrav Jaroslave,

Izvini sto se tek sad odazivam, u guzvi sam nekoj...

Elem, hvala za kod, tabela lepo izgleda, imam samo dve male primedbe...

Prvo --- fajl-sistem na Linux-u je case-sensitive, pa kod nije hteo da mi se kompajlira dok nisam u fajlu SeedComplex.h zamenio

    #include <QTableView.h>

sa

    #include <qtableview.h>

Tek kad sam to uradio, uspeo je da pronadje taj fajl. Pa posto je na Windows-u verovatno svejedno, bilo bi dobro da ime tog fajla pises malim slovima.

Drugo --- bilo bi dobro da belo polje i tabela u njemu skaliraju svoju velicinu kada resize-ujem prozor, slicno kao sto si to vec namestio za onaj drugi prozor.


To je to sto se tice primedbi. Upload-ovacu tvoj kod (sa ovom popravkom za mala slova) na GitHub, a za tebe evo sledeca dva nova zadatka:

(1) U prozoru koji se otvori nakon seed-ovanja, gde pise onaj tekst, imacemo napisane "reci" u formatu

   [nekitekst], [drugitekst], [trecitekst]

isl. Napravi da svaka rec sa svojim zagradama [...] bude klikabilna (npr. kao hyperlink, ili kao button, ili kako god ti bude zgodno), i da se klikom na nju otvori nov (treci) prozor, u kome ce da pise ono sto je unutar tih zagrada. Svake zagrade otvaraju svoj prozor (u jednom pise "nekitekst", u drugom "drugitekst", u trecem "trecitekst", itd). Zagrade su odvojene razmacima, zapetama ili bilo cime drugim, a tekst van zagrada ne treba da bude klikabilan.

(2) Kada se seed-uje nesto i formira odgovarajuci red u tabeli, dodaj u trecu kolonu tog reda u tabeli jedan button (u kome pise "crtaj"). Klik na taj button treba da otvori nov prozor, u kome ces da nacrtas dve tacke (izaberi sam (x,y)-koordinate obeju tacaka), i spoji ih jednom linijom. Tacke i linija neka budu u crnoj boji na beloj pozadini. Debljina linije moze da bude 1 piksel, ili koliko je zgodno da se lepo vidi, a tacke treba da budu okrugle i duplo deblje od linije.

Javi mi ako treba jos nesto da se precizira oko ovih zadataka. ;-)

Pozdrav! :-)
Marko


Dr. Marko Vojinovic
Group for Gravitation, Particles and Fields
Institute of Physics
University of Belgrade
======================
home page: www.markovojinovic.com
e-mail:    vmarko at ipb.ac.rs



On Wed, 18 May 2022, Jaroslav Blagojevic wrote:

> Gui sa tabelom za listu kompleksa.
> Pozdrav,
> 
> Jaroslav
> 
> 
> On Wed, May 4, 2022 at 9:18 AM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>
>       Pozdrav Jaroslave,
>
>       Super, dijalog radi odlicno. Kada korisnik izabere nesto u ComboBox-u, popuni dimenziju i ime, i klikne na ok, otvori se prozor za prikaz kompleksa u kome nesto pise.
>
>       'Ajde sada kao sledeci zadatak napravi tabelu u glavnom prozoru (u velikom polju ispod menija i toolbar-a), tako da kada korisnik klikne na ok u dijalogu, da se (osim otvaranja onog prozora za
>       prikaz kompleksa) popuni i jedan red u toj tabeli, sa imenom i dimenzijom kompleksa koje je korisnik zadao.
>
>       Ideja je da mogu recimo vise puta zaredom da selektujem meni File -> New, i da svaki put u dijalogu drugacije setujem ComboBox i popunim polja za ime i dimenziju, pa da mi se svaki put otvori nov
>       prozor za prikaz, i da se istovremeno svaki put doda po jedan nov red u toj tabeli u glavnom prozoru.
>
>       Ilustrovao sam tu tabelu na onoj mock-up slici celog gui-ja koju sam onomad poslao.
>
>       :-)
>       Marko
> 
>
>       Dr. Marko Vojinovic
>       Group for Gravitation, Particles and Fields
>       Institute of Physics
>       University of Belgrade
>       ======================
>       home page: www.markovojinovic.com
>       e-mail:    vmarko at ipb.ac.rs
> 
> 
>
>       On Mon, 2 May 2022, Jaroslav Blagojevic wrote:
>
>       > Poslao si samo meni, pa forward-ujem: >> Da, video sam i to, propustio sam da prokomentarisem. Odlicno! ;-)
>       >
>       > >> Hristos voskrese!
>       >
>       > U prilogu, forma sa combo-boxom za izbor kompleksa, i različiti sadržaj prikaza kompleksa u odnosu na izbor.
>       >
>       > Pozdrav,
>       >
>       > Jaroslav
>       >
>       >
>       >
>       > On Mon, Apr 25, 2022 at 5:36 PM Jaroslav Blagojevic <jaroslav.blagojevic at gmail.com> wrote:
>       >       Takođe, polje za prikaz kompleksa se resize-uje sa formom.
>       > Pozdrav,
>       >
>       > Jaroslav
>       >
>       >
>       > On Thu, Apr 21, 2022 at 9:35 PM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>       >
>       >       Pozdrav Jaroslave,
>       >
>       >       Hvala za formu, lepo izgleda. Samo jedna sugestija --- mozda bi bilo bolje da umesto pojedinacnih dugmica za seed f-je stavis onaj "Combo Box", tako da korisnik otvori
>       >       spisak i izabere jednu seed f-ju sa tog spiska. U buducnosti cemo dodavati jos seed f-ja, pa je zgodnije da ih prosto dodajemo na taj spisak u Combo Box, nego da
>       >       dodajemo nove dugmice svaki put.
>       >
>       >       Btw, mozes za pocetak da namestis da se u prozoru za stampanje odstampa razlicit tekst za razlicite izbore seed f-ja iz forme, cisto da imamo osecaj da taj izbor nesto
>       >       radi --- bar dok ne budes dodao pozive na prave seed f-je i f-je za stampanje.
>       >
>       >       :-)
>       >       Marko
>       >
>       >
>       >       Dr. Marko Vojinovic
>       >       Group for Gravitation, Particles and Fields
>       >       Institute of Physics
>       >       University of Belgrade
>       >       ======================
>       >       home page: www.markovojinovic.com
>       >       e-mail:    vmarko at ipb.ac.rs
>       >
>       >
>       >
>       >       On Wed, 20 Apr 2022, Jaroslav Blagojevic wrote:
>       >
>       >       > Forma za seed-ovanje kompleksa. Nije još povezana sa kodom.
>       >       > Pozdrav,
>       >       >
>       >       > Jaroslav
>       >       >
>       >       >
>       >       > On Tue, Apr 5, 2022 at 9:06 PM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>       >       >
>       >       >       Ok, evo jedan update vezano za gui --- pre svega da Jaroslav ima bolji osecaj sta treba da napravi, a i za vas ostale ako imate neku ideju ili sugestiju da se
>       >       nesto izmeni
>       >       >       ili doda.
>       >       >
>       >       >       Vodio sam se onim "jedna slika 1000 reci", pa sam nacrtao mock-up cele ideje kako gui treba da izgleda i koje elemente da sadrzi. Slika je u attachment-u.
>       >       >
>       >       >       Nisam mnogo spretan sa crtanjem, ali na slici treba da bude ilustracija svih glavnih elemenata gui-ja. Osnovna aplikacija je "Triangulator GUI" prozor --- on
>       >       ima menije na
>       >       >       vrhu, status bar na dnu, i unutra u prozoru tabelu sa spiskom instanciranih kompleksa. Svaki kompleks se instancira bilo ispocetka (pomocu "File -> New"
>       >       menija), ili se
>       >       >       ucita neki postojeci iz fajla (pomocu "File -> Open" menija). Elementi tabele su self-explanatory, s tim da se u "Actions" koloni nalaze "dugmici" kojima se
>       >       pozivaju
>       >       >       odgovarajuce akcije.
>       >       >
>       >       >       Dugme "Listing" treba da otvori odgovarajuci "Triangulator listing" prozor za dati kompleks. Dva takva su nacrtana levo, i u njima se nalaze ispisane tablice
>       >       sa simpleksima
>       >       >       datog kompleksa. Dugme "Visualiser" otvara "Triangulator visualiser" prozor (levo dole), u kome se nalazi wireframe-slika celog kompleksa, kao i slajderi
>       >       kojima se
>       >       >       kontrolisu raznorazni parametri za embedding i crtanje (tu temu cemo detaljnije naknadno o tom potom).
>       >       >
>       >       >       U Listing prozorima, pojedinacni simpleksi na spisku (brojevi u zagradama) treba da budu klikabilni. Klikom na neki simpleks treba da se otvori njegov
>       >       "Triangulator
>       >       >       Inspector" prozor. Dva takva prozora su nacrtana desno, za dva razlicita simpleksa. Inspector treba da prikaze sve podatke koji se znaju o datom simpleksu, na
>       >       slici sam
>       >       >       pokusao da to ilustrujem. Simpleksi u "Neighbors" tablici treba takodje da budu klikabilni, i treba da otvore nov Inspector prozor, isto kao i iz Listing
>       >       prozora. Osim
>       >       >       ovoga, Inspector prozor sadrzi nekoliko dugmica za akcije koje su moguce nad datim simpleksom --- editovanje vrednosti boja, dodavanje/brisanje novih boja,
>       >       Pahnerove poteze,
>       >       >       i sve ostale operacije nad simpleksima koje cemo kasnije jos praviti.
>       >       >
>       >       >       Konacno, dole u sredini se nalazi i "Triangulator log" prozor, koji treba da prikazuje log-fajl za celu datu sesiju. To sluzi jedino za ispisivanje i pregled
>       >       log-a, i treba
>       >       >       samo da se azurira redovno kad se nesto novo doda u log. Prozor za log je najzgodnije otvarati po potrebi pomocu "View -> View log" menija glavnog prozora.
>       >       >
>       >       >       To je okvirno to. Naravno, tu treba da bude i gomila kojekakvih dialog-box-eva za otvaranje fajla, snimanje, dodavanje boja, provere "are you sure", itdisl.
>       >       Ali osnovni
>       >       >       dizajn gui-ja se sastoji od ovih pet tipova prozora koje sam nacrtao. Kasnije, kako budemo dodavali raznorazne funkcionalnosti, kacicemo na ove prozore jos
>       >       dodatne
>       >       >       raznorazne dugmice, slajdere, ikonice, ovo, ono., ali generalna struktura treba da izgleda ovako.
>       >       >
>       >       >       Javite utiske, i ako imate bilo kakva pitanja ili sl.
>       >       >
>       >       >       :-)
>       >       >       Marko
>       >       >
>       >       >
>       >       >       Dr. Marko Vojinovic
>       >       >       Group for Gravitation, Particles and Fields
>       >       >       Institute of Physics
>       >       >       University of Belgrade
>       >       >       ======================
>       >       >       home page: www.markovojinovic.com
>       >       >       e-mail:    vmarko at ipb.ac.rs
>       >       >
>       >       >
>       >       >
>       >       >       On Sun, 3 Apr 2022, Marko Vojinovic wrote:
>       >       >
>       >       >       >
>       >       >       > Odlicno, super! Uspeo sam da import-ujem fajlove u qtcreator projekt, i rade
>       >       >       > mi build i run bez problema. Upload-ovacu ove fajlove na GitHb, sve sto se
>       >       >       > tice gui-ja ce da bude u direktorijumu "gui" na GitHub-u.
>       >       >       >
>       >       >       > Posto ovaj proof-of-concept kod radi lepo, moj predlog je da sad pocnes da
>       >       >       > implementiras onu funkcionalnost (1)-(3) iz prethodnog e-mail-a.
>       >       >       >
>       >       >       > Za pocetak, kad korisnik klikne na File -> New, treba da se otvori
>       >       >       > dialog-box, gde bi iz drop-down liste izabrao koji pocetni kompleks zeli da
>       >       >       > instancira, koja mu je dimenzija i kako ce da se zove (integer D i string
>       >       >       > "name" u klasi SimpComp). Dialog-box treba da ima standardne tastere "Ok" i
>       >       >       > "Cancel" na koje korisnik klikne kad popuni podatke. Onda na osnovu tih
>       >       >       > podataka treba pozvati odgovarajucu seed f-ju, obojiti ceo rezultujuci
>       >       >       > kompleks UniqueID bojama, i ispisati ga pomocu print_compact u ovaj prozor sa
>       >       >       > tekstualnim poljem. Taj prozor treba da nosi ime kompleksa (string name) koje
>       >       >       > je korisnik zadao, da bi se razlikovao od ostalih prozora za druge komplekse
>       >       >       > (korisnik moze da ih instancira vise ako zeli).
>       >       >       >
>       >       >       > Takodje, bilo bi dobro da tekstualno polje u tom prozoru menja svoje
>       >       >       > dimenzije kada se prozor resize-uje, tako da "prati" velicinu samog prozora.
>       >       >       > Ako sadrzaj polja ne moze da stane u polje, treba da se pojave horizontalni i
>       >       >       > vertikalni scroll-bar-ovi, da sadrzaj u polju moze da se pomera tamo-amo.
>       >       >       >
>       >       >       > Posle cemo da razradjujemo dalje ceo gui interfejs, imam jos neke ideje za
>       >       >       > taj bazican izgled.
>       >       >       >
>       >       >       > Sve relevantne klase i f-je iz biblioteke koje se pozivaju iz gui-ja su
>       >       >       > deklarisane u triangulator.h fajlu, pa prosto njega treba da include-ujes u
>       >       >       > gui, i tokom kompajliranja da link-ujes biblioteku triangulator-library.a
>       >       >       > (sto je zamisao trajnog resenja), ili da kompajliras i biblioteku i gui u
>       >       >       > jednom mahu, ako ti je lakse (zasad). Samo obrati paznju da konfigurises ceo
>       >       >       > direktorijum u kome je triangulator.h kao putanju za include fajlove, jer ce
>       >       >       > triangulator.h interno da include-uje gomilu drugih .h fajlova, pa da
>       >       >       > kompajler ume da nadje sve njih.
>       >       >       >
>       >       >       > Kasnije cemo da napravimo Makefile, kako za gui tako i za biblioteku, da
>       >       >       > automatizujemo ceo build postupak itd. Moj qtcreator vec pravi neki Makefile,
>       >       >       > ali je taj veoma podesen za Linux platformu i moju lokalnu strukturu
>       >       >       > direktorijuma, pa nije zgodan, nego cemo da napravimo jedan novi "kako
>       >       >       > treba", kad dodje vreme...
>       >       >       >
>       >       >       > :-)
>       >       >       > Marko
>       >       >       >
>       >       >       >
>       >       >       > Dr. Marko Vojinovic
>       >       >       > Group for Gravitation, Particles and Fields
>       >       >       > Institute of Physics
>       >       >       > University of Belgrade
>       >       >       > ======================
>       >       >       > home page: www.markovojinovic.com
>       >       >       > e-mail:    vmarko at ipb.ac.rs
>       >       >       >
>       >       >       >
>       >       >       >
>       >       >       > On Thu, 31 Mar 2022, Jaroslav Blagojevic wrote:
>       >       >       >
>       >       >       >> Evo, gui za početak.Qt downloadujete sa https://www.qt.io/download -> go
>       >       >       >> open source -> download the qt online installer
>       >       >       >> Treba vam qtcreator, qtdesigner, ja sam instalirao qt 6.2.3 biblioteke.
>       >       >       >> Može sve (~30 gb), a dovoljno je i qtcore, qtwidgets, qtgui, a trebaće nam
>       >       >       >> i qt opengl ili qt 3d.
>       >       >       >> Takođe vam treba nalog https://login.qt.io/login -> Create Account. Ja im
>       >       >       >> nisam ostavio telefon.
>       >       >       >> Avast prijavljuje virus za qtdesignstudio, na webu kažu da je to uglavnom
>       >       >       >> lažno obaveštenje. U svakom slučaju vam ne treba.
>       >       >       >>
>       >       >       >> Posle toga napravite novi projekat. U Visual Studio-u 2019, instalirate na
>       >       >       >> extensions -> manage extensions -> qt visual studio tools (izaberite
>       >       >       >> putanju do msvc2019_64\6.2.3\bin qmake).
>       >       >       >> Posle toga možete New Project -> kucate qt u search bar-u -> qt widgets
>       >       >       >> application. Za Linux pretpostavljam da može qtcreator, napravite novi qt
>       >       >       >> widgets/qmake projekat. Kod u prilogu
>       >       >       >> (pazite da ne prekopirate preko triangulator-ovog main.cpp), kopirajte
>       >       >       >> preko toga što ste napravili.
>       >       >       >>
>       >       >       >> Pozdrav,
>       >       >       >>
>       >       >       >> Jaroslav
>       >       >       >>
>       >       >       >>
>       >       >       >>
>       >       >       >> On Fri, Feb 11, 2022 at 11:01 PM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>       >       >       >>
>       >       >       >>       Poceti sa konstrukcijom GUI-ja. Za pocetak, umesto crteza na ekranu,
>       >       >       >> GUI treba da realizuje sledece mogucnosti:
>       >       >       >>
>       >       >       >>       (1) Da meni opcija File -> New pita korisnika da izabere
>       >       >       >> instanciranje: duzi, trougla, tetraedra, D-simpleksa, D-sfere (uz dopunsko
>       >       >       >> pitanje za vrednost D), i na osnovu
>       >       >       >>       korisnikovog izbora da pozove odgovarajucu seed f-ju.
>       >       >       >>
>       >       >       >>       (2) Kada se seed f-ja izvrsi, obojiti kompleks bojom UniqueID (f-ja
>       >       >       >> UniqueIDColor::colorize_entire_complex() iz zadatka 2), pa zatim otvoriti
>       >       >       >> manji prozor (za novo-kreirani
>       >       >       >>       kompleks), i u tom prozoru ispisati redom sve k-simplekse metodom
>       >       >       >> slicno kao u zadatku 4 (ali bez ispisivanja podsuseda). Tablicu
>       >       >       >> organizovati rastuce po nivoima k, slicno
>       >       >       >>       kao drvo direktorijuma i fajlova u file-manageru (da spisak simpleksa
>       >       >       >> nivoa k bude moguce "kolapsirati" i "ekspandirati" kliktanjem).
>       >       >       >>
>       >       >       >>       (3) Svaki simpleks ispisan na spisku u prozoru iz (2), npr.
>       >       >       >> "(1-2-4)", treba da bude klikabilan --- kliktanje na njega treba da otvori
>       >       >       >> tzv. "inspector" prozor za taj
>       >       >       >>       konkretni k-simpleks, u kome ce da budu pobrojane sve boje i njihove
>       >       >       >> vrednosti koje taj k-simpleks nosi. Za sada su UniqueID i Boundary jedine
>       >       >       >> boje koje ce se pojaviti na
>       >       >       >>       tom spisku, ali kasnije cemo dodavati i druge boje, pa algoritam
>       >       >       >> treba prosto da prodje kroz spisak svih boja i sve ih pobroji jednu ispod
>       >       >       >> druge.
>       >       >       >>
>       >       >       >>       Za inspektor-prozor planiramo dodatne funkcionalnosti za kasnije
>       >       >       >> (menjanje vrednosti boja, ispis tablice suseda datog k-simpleksa, dugmad za
>       >       >       >> primenjivanje raznih f-ja nad
>       >       >       >>       simpleksom, itd). Sa druge strane, prozor u kome ispisujemo tablicu
>       >       >       >> svih simpleksa u kompleksu nece imati neku narocitu dodatnu funkcionalnost
>       >       >       >> (koristicemo ga dok ne
>       >       >       >>       implementiramo prozor koji ce da crta ceo kompleks na ekranu, umesto
>       >       >       >> ispisivanja tablice simpleksa).
>       >       >       >>
>       >       >       >>
>       >       >       >>       :-)
>       >       >       >>       Marko
>       >       >       >>
>       >       >       >>
>       >       >       >>       Dr. Marko Vojinovic
>       >       >       >>       Group for Gravitation, Particles and Fields
>       >       >       >>       Institute of Physics
>       >       >       >>       University of Belgrade
>       >       >       >>       ======================
>       >       >       >>       home page: www.markovojinovic.com
>       >       >       >>       e-mail:    vmarko at ipb.ac.rs
>       >       >       >>
>       >       >       >>
>       >       >       >>       --
>       >       >       >>       QGHG-it-dev-list mailing list
>       >       >       >>       QGHG-it-dev-list at ipb.ac.rs
>       >       >       >>       http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>       >       >       >>
>       >       >       >>
>       >       >       >--
>       >       >       QGHG-it-dev-list mailing list
>       >       >       QGHG-it-dev-list at ipb.ac.rs
>       >       >       http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>       >       >
>       >       >
>       >       >--
>       >       QGHG-it-dev-list mailing list
>       >       QGHG-it-dev-list at ipb.ac.rs
>       >       http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>       >
>       >
>       >--
>       QGHG-it-dev-list mailing list
>       QGHG-it-dev-list at ipb.ac.rs
>       http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
> 
> 
>


More information about the QGHG-it-dev-list mailing list