if(_param.antialias) painter.setrenderhint(qpainter::antialiasing, true);

Hasonló dokumentumok
Görbe ábrázolás a QCustomPlot widgettel

bool _freehand = false; QPoint _lastpoint; // ebben a pontban volt az utolsó rajzolásnál az egérmutató

A jobboldalon a pnlright egy Stacked Widget Állítsuk be az első lapot és nevezzük el pnldraw-ra:

Widget-ünket a festők vásznáról Canvas-nak nevezzük el. Mit kell a widgetnek tudnia?

3D-s számítógépes geometria és alakzatrekonstrukció

QT Grafika az alap alkalmazás (GrafikaQtvel) működése

3. Osztályok II. Programozás II

3D-s számítógépes geometria és alakzatrekonstrukció

QT Grafika Az alap alkalmazás felhasználói felülete

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Mobil informatika gyakorlat. 2. óra: NFC a gyakorlatban

Képfájlok beolvasása és megjelenítése

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

Grafikus Qt programok írása segédeszközök nélkül

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása

BME MOGI Gépészeti informatika 7.

Elemi alkalmazások fejlesztése III.

Választó lekérdezés létrehozása

Feladat. Tervezés és implementálás

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

Elemi alkalmazások fejlesztése III. A Qt assistant elindítása. Ajánlott ir odalom. A Qt assistant nyitó ablaka

Pontfelhő létrehozás és használat Regard3D és CloudCompare nyílt forráskódú szoftverekkel. dr. Siki Zoltán

Grafikus Felhasználói Felületű (GUI) program készítése a QT Creatorral, illetve a Microsoft Visual Studio-val

Elemi alkalmazások fejlesztése III.

Mérési adatgyűjtés és adatfeldolgozás 2. előadás

Az importálás folyamata Felhasználói dokumentáció verzió 2.1.

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010.

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

Budapest, március. ELTE Informatikai Kar

Ez a telepítési dokumentum segítséget nyújt abban, hogy szabályosan telepítse az Áfa átállító szoftvert Szerviz 7 programhoz.

Bevezetés a QGIS program használatába Összeálította dr. Siki Zoltán

Rendszergazda kézikönyv

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Bevezetés a QGIS program használatába 2.0 verzió Összeállította: dr. Siki Zoltán

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

SZE INFORMATIKAI KÉPZÉS 1

CAD-ART Kft Budapest, Fehérvári út 35.

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Bevezetés a QGIS program használatába 3.4 verzió Összeállította: dr. Siki Zoltán

OOP és UML Áttekintés

RAJZ1. vezetett gyakorlat

Rácsvonalak parancsot. Válasszuk az Elsődleges függőleges rácsvonalak parancs Segédrácsok parancsát!

Rajz 02 gyakorló feladat

Android Commander Felhasználói kézikönyv

Táblázatos adatok használata

A WORD 2016 szövegszerkesztő újdonságai

Készítsen egy adatbázist (egytáblásat) egy számítástechnikai tanfolyam résztvevőiről. Az adattábla rögzítse a következőket:

A LOGO MOTION TANÍTÁSA

Navigációs GPS adatok kezelése QGIS programmal (1.4 verzió) Összeállította dr. Siki Zoltán

Programozási technológia

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

3Sz-s Kft. Tisztelt Felhasználó!

Programozás BMEKOKAA146. Dr. Bécsi Tamás 10. Előadás

Alap számológép alkalmazás

A program telepítése. A letöltés lépései: 1. nyissa meg a WEB-oldalt, majd válassza a Letöltés menüpontot a felső sorban:

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

A MOKKA hitelesítő szoftver telepítése és használata

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás Bevezetés I.

C#---Access adatbáziskezelési gyakorlat

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Programozás alapjai 9.Gy: Struktúra 2.

Swing GUI készítése NetBeans IDE segítségével

Elemi alkalmazások fejlesztése III

Programozás 6. Dr. Iványi Péter

Alkalmazások fejlesztése III. Qt 4 /C++ alapú MDI alkalmazás: Számlakészítő program 3/3

2 műszeres változat, WEST4170+ hőmérsékletszabályozó műszerrel, Modbus TCP kommunikációval. 3. rész

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Oktatási segédanyag. Weboldalszerkesztési gyakorlatok

Maximum kiválasztás tömbben

A C# programozási nyelv alapjai

Access adatbázis elérése OLE DB-n keresztül

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

OOP #14 (referencia-elv)

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Közegek és felületek megadása

Szoftvertechnolo gia gyakorlat

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Programozás I. Grafika Eseménykezelés. Programozás I. 2. gyakorlat Interakció a grafikus felületen, tagfüggvények. Surányi Márton PPKE-ITK

A program telepítése. A letöltés lépései: 1. nyissa meg a WEB-oldalt, majd válassza a Letöltés menüpontot: 2. Kattintson a DbérWIN 2014 hivatkozásra:

A program telepítése. A letöltés lépései: 1. nyissa meg a WEB-oldalt, majd válassza a Letöltés menüpontot: 2. Kattintson a DbérWIN 2015 hivatkozásra:

VARIO Face 2.0 Felhasználói kézikönyv

QGIS gyakorló. --tulajdonságok--stílus fül--széthúzás a terjedelemre).

Access gyakorlati feladatok lépésről lépésre

kommunikáció Megoldások

Szürke árnyalat: R=G=B. OPENCV: BGR Mátrix típus: CV_8UC3 Pont típus: img.at<vec3b>(i, j) Tartomány: R, G, B [0, 255]

Ugráló gomb oktatási segédlet Ugráló gomb

Oktatás. WiFi hálózati kapcsolat beállítása Windows XP és Windows 7-es számítógépeken. SZTE Egyetemi Számítóközpont

Kézikönyv. Fizetési felszólítás létrehozása, szerkesztése és nyomtatása

1. Jelgenerálás, megjelenítés, jelfeldolgozás alapfunkciói

Pénzügyi bizonylatok kontírozása, könyvelése felhasználói dokumentum Lezárva:

Lapműveletek. Indítsuk el az Excel programot és töröljük ki a Munka1 nevű munkalapot!

CAN alapú járműves adatokat megjelenítő szoftver fejlesztése

Átírás:

Elmosás (antialias) struct RajzParameterek int penwidth = 1; Qt::PenStyle penstyle = Qt::SolidLine; Qt::PenCapStyle pencap = Qt::FlatCap; Qt::PenJoinStyle penjoin = Qt::MiterJoin; Qt::BrushStyle brushstyle = Qt::SolidPattern; QColor pencolor = qrgb(0, 0, 0), brushcolor = qrgb(255, 266, 255); bool antialias = false;

if(_param.antialias) painter.setrenderhint(qpainter::antialiasing, true);

signals: void LastPosChanged(QMouseEvent *); Mi a signal? #define signals public Hova rakjuk be? void Canvas::mouseReleaseEvent(QMouseEvent *event) if (_drawing & event->button() == Qt::LeftButton) LineTo(event->pos());// minimum 1 pont legyen kirajzolva _drawing = false; // elmentjük az utolsó pontot _lastpoint = event->pos(); // majd elküldjük a SIGNAL-t, hátha kell valakinek... // itt kapja meg a paramétert // a MOC lecseréli ezt a sort a C++ fordító elől emit LastPosChanged(event);

Egér események: void mousepressevent(qmouseevent *event) Q_DECL_OVERRIDE; void mousemoveevent(qmouseevent *event) Q_DECL_OVERRIDE; void mousereleaseevent(qmouseevent *event) Q_DECL_OVERRIDE; állapotok lekérdezése: a QMouseEvent-ből: Qt::MouseButton event->button() QList<Qt::MouseButton> event->buttons() QPoint pos() QPoint globalpos() - Nem ugyanaz, mint a QPoint maptoglobal( pos() ) Akkor használjuk, ha pl. az egérrel elmozdítjuk a widget-et. Qt::KeyboardModifiers event->modifiers() const A lehetséges módosító gombok: Egyik ilyen gomb sem Bármelyik SHIFT Bármelyik CTRL Bármelyik ALT A Windows gomb A numerikus billentyűzet egy gombja, valamelyik nyíl, stb Csak X11 alatt Qt::NoModifier Qt::ShiftModifier Qt::ControlModifier Qt::AltModifier Qt::MetaModifier Qt::KeypadModifier Qt::GroupSwitchModifier

Lépések: 1. Töltsük le a tanszéki szerverről (www.fat.bme.hu/updownload/download.php) a GrafikaQTvel.7z, sinus.txt, cosinus.txt és CSAK Windows alatt a 7z1604-x64.exe fájlokat 2. Windows - Futtassuk le a 7z1604-x64.exe telepítőt 3. Windows - Indítsuk el a 7zfm fájl menedzsert 4. Windows - Válasszuk ki a GrafikaQTvel.7z fájlt és bontsuk ki a tartalmát egy megfelelő helyre. Mozgassuk a forrásfájlok mellé a két txt fájlt Linux parancssor - 7z x GrafikaQTvel.7z [-o<ahova ki akarjuk bontani>] 5. Indítsuk el a QT Creator-t vagy a Visual Studio-t 6. Fordítsuk le és futtassuk a projektet, hogy minden rendben van-e

7. Így kell kinéznie 8. 9. Lépjünk ki a programból 10. Adjuk hozzá a projekthez a qcustomplot.cpp és qcustomplot.h fájlokat 11. Ezután kapcsoljunk át a jobb oldali stckpages 1. lapjára (eddig a neve pnlright volt). Nevezzük át pnlgraph-ra! Adjunk ehhez hozzá egy widgetet, amit nevezzük át plotter-re. A pnlgraph elrendezését állítsuk be pl. vízszintesre, hogy a plotter teljes lapot kitöltse. 12. Léptessük elő (Promote to ) a graph widgetet QCustomPlot-ra 13. Kattintsunk a bal oldalon a Grafikon fejlécre 14. Mentsük el a változtatást 15. Adjuk hozzá a #include "qcustomplot.h" sort a grafikaqtvel.cpp fájlhoz 16. Módosítsuk a grafikaqtvel.cpp fájlban az on_tbxmenu_currentchanged(int index) függvényt! index == 1 esetén kapcsoljon át az 1-es lapra 17. QT Creatorral fordítás esetén módosítsuk a projekt fájlban a QT += sort QT += widgets gui printsupport ra 18. Ellenőrizzük működik-e. Fájl beolvasás: meg van írva csak a GUI-hoz kell kapcsolni 19. adjuk hozzá a grafikaqtvel.h-hoz a btnbrowse1 gomb clicked SIGNALjához tartozó SLOT-ot void on_btnbrowse1_clicked(); 20. Válasszuk ki az stckpages widgetet. Állítsuk át a btnplot és a btnprint gombokat inaktívra töröljük ki a kijelölést a Property Editorban ezek enabled jelölőnégyzetéből! Mentsük el a változtatásokat!

Adjuk hozzá a SLOT függvényt a grafikaqtvel.cpp fájlhoz! void GrafikaQTvel::on_btnBrowse1_clicked() QString filename = QFileDialog::getOpenFileName(this, "Adat fájl megnyitása", "./", "ASCII fájlok (*.txt);;bináris fájlok (*.)"); if (!filename.isempty()) // volt létező fájl név ui.edtfile1->settext(filename); Kirajzolás 21. A kirajzolás gomb csak akkor aktív, ha létező fájl név van a beviteli mezőben. Deklaráljuk a.h fájlban és készítsük el a.cpp fájlban a SLOT-ját. A függvény: void GrafikaQTvel::on_edtFile1_textChanged(QString s) bool benable =!s.isempty()&& QFile::exists(s); ui.btnplot->setenabled(benable); A függvényt a Kirajzolás (btnplot) megnyomására olvassuk be és rajzoltatjuk ki. A SLOT definíciója (a deklarációról se feledkezzünk meg!) void GrafikaQTvel::on_btnPlot_clicked() QVector <double> x, y; if (_ReadFile(ui.edtFile1->text(), x, y) > 0) // * egyébként hiba QCPGraph *graph = ui.plotter->addgraph(); plotter->setdata(x, y); // ** ui.plotter->replot(); // *** 22. Fordítsuk le és futtassuk a programot! Mi a probléma a megjelenítéssel? 23. A *** sor elé szúrjuk be a következőket: double minx = 9.0e99, miny = 9.0e00, maxx=-9.0e99, maxy=-9.0e99; for (int i = 0; i < x.size(); ++i) if (minx > x[i]) minx = x[i]; if (miny > y[i]) miny = y[i]; if (maxx < x[i]) maxx = x[i]; if (maxy < y[i]) maxy = y[i]; ui.plotter->xaxis->setrange(minx, maxx);

ui.plotter->yaxis->setrange(miny, maxy); Ezután már a várt képet kapjuk: 24. a GrafikaQTvel konstruktorába írjuk be: ui.plotter->setinteractions(qcp::irangedrag QCP::iRangeZoom); Feliratozzuk a tengelyeket: ui.plotter->xaxis->setlabel("time (sec)"); ui.plotter->yaxis->setlabel("signal (V)"); 25. Vonal stílus és ábrák. A ** sor elé: graph->setlinestyle(qcpgraph::lsnone); graph->setscatterstyle(qcpscatterstyle::ssdisc); A pontok összefolynak, csak belenagyítva látható, hogy kis korongok 26. Kommentezzük ki a most beírt két sort 27. Ha több fájlt jelenítünk meg, mindegyik bent marad a memóriában. Használjuk az Adat felülírása jelölőnégyzetet a bent levők kitörlésére! A * sor elé szúrjuk be: if (ui.chkoverwrite1->ischecked()) while (ui.plotter->graph(0)) ui.plotter->removegraph(0); 28. Adjunk hozzá konstruktorban a setinteractions() hoz egy újabbat bitet, a QCP::iSelectPlottables ami lehetővé teszi egy görbe kiválasztását:: ui.plotter->setinteractions(qcp::irangedrag QCP::iRangeZoom QCP::iSelectPlottables); 29. Módosítsuk a kódot úgy, hogy minden függvénygörbéhez adjuk hozzá a fájl nevét és adjunk egy jelölőnégyzetet a laphoz, amelyik megmutatja/eltünteti a jelmagyarázatot! A ** sor elé szúrjuk be: graph->setname(ui.edtfile1->text()); Adjunk hozzá két jelölőnégyzetet az UI-hoz 1. Nevük legyen chkscatter és chklegend! 1 Az egyszerűség kedvéért a hozzáadás előtt szüntessük meg a layout-ot (Break Layout).

Az elsőhöz nem kell SLOT, elég beírni a kikommentezett graph->setscatterstyle(qcpscatterstyle::ssdisc); sor elé a vizsgálatát: if (ui.chkscatter->ischecked()) graph->setscatterstyle(qcpscatterstyle::ssdisc); 30. A jelmagyarázathoz csináljuk meg a void on_chklegend_toggled(bool); SIGNAL-t: void GrafikaQTvel::on_chkLegend_toggled(bool b) ui.plotter->legend->setvisible(b); ui.plotter->replot();