Graafisen käyttöliittymän ohjelmointi Syksy 2013

Samankaltaiset tiedostot
Tiedostonkäsittely ja asetusten tallentaminen. Graafisen käyttöliittymän ohjelmointi Luento 14

Leikepöydän käyttö.net ja QT. Juha Järvensivu 2008

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Qt perusteet. Juha-Matti Vanhatupa. (vanhan kurssin Graafisen käyttöliittymän ohjelmointi materiaalia)

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi

Ohjelmoinnin perusteet Y Python

Sarjallistaminen. Juha Järvensivu 2007

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Ohjelmoinnin perusteet Y Python

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Voit käyttää tekemääsi ohjelmaa seuraavan viikon harjoituksissa, joten kopio työsi hedelmät talteen äläkä tuhoa niitä.

Luento 5. Timo Savola. 28. huhtikuuta 2006

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Ohjelmoinnin perusteet Y Python

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

8. Näppäimistöltä lukeminen 8.1

TIE Ohjelmistojen suunnittelu

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Harjoitustyö: virtuaalikone

Web Services tietokantaohjelmoinnin perusteet

Graafisen käyttöliittymän ohjelmointi

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

QT model view. Juha Järvensivu 2008

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Olio-ohjelmointi Syntaksikokoelma

TIE Ohjelmistojen suunnittelu

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Ohjelmoinnin jatkokurssi, kurssikoe

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Ohjelmoinnin perusteet Y Python

QT tyylit. Juha Järvensivu 2008

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Perusohje vi-editorin käyttöön

Moduli 5: Kehittyneitä piirteitä

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Luokat ja oliot. Ville Sundberg

A TIETORAKENTEET JA ALGORITMIT

Ohjelmoinnin perusteet Y Python

12. Näppäimistöltä lukeminen 12.1

Lyhyt kertaus osoittimista

QT framework. Juha Järvensivu 2007

Binäärioperaatiot Tiedostot ja I/O

Mikä yhteyssuhde on?

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Ohjelmoinnin perusteet Y Python

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

4. Lausekielinen ohjelmointi 4.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

1. Mitä tehdään ensiksi?

4. Olio-ohjelmoinista lyhyesti 4.1

15. Ohjelmoinnin tekniikkaa 15.1

P e d a c o d e ohjelmointikoulutus verkossa

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

Geneeriset luokat. C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet. Geneerisen luokan käyttö.

Algoritmit 1. Luento 3 Ti Timo Männikkö

C# ja.net. Juha Järvensivu 2007

8. Näppäimistöltä lukeminen 8.1

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmoinnin perusteet Y Python

18. Abstraktit tietotyypit 18.1

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

Jypelin käyttöohjeet» Ruutukentän luominen

Tapahtumapohjainen ohjelmointi

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Tekstinkäsittely 1. Peruskäyttö. Tietotekniikan perusteet Metropolia Ammattikorkeakoulu Vesa Ollikainen

13 Operaattoreiden ylimäärittelyjä

TIE Ohjelmistojen suunnittelu

Listarakenne (ArrayList-luokka)

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

ITKP102 Ohjelmointi 1 (6 op)

Demo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl;

TIETORAKENTEET JA ALGORITMIT

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Metodien tekeminen Javalla

TIE Ohjelmistojen suunnittelu

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Ohjelmoinnin peruskurssi Y1

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmoinnin peruskurssi Y1

linux: Prosessit kill PID lopettaa prosessin PID, jos siihen on oikeudet Ctrl + c lopettaa aktiivisen prosessin L7: linux

Ohjelmoinnin perusteet Y Python

Olio-ohjelmointi Javalla

Ohjelmointi 2 / 2010 Välikoe / 26.3

Tietorakenteet ja algoritmit

Transkriptio:

TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 7 Tiedostonkäsittely ja asetukset Juha-Matti Vanhatupa

Sisältö Leikepöytä Asetusten tallentaminen (QSettings) Tietovirrat ja tiedostonkäsittely Undo/redo toiminnallisuus

QClipboard Kapseloi leikepöydän käytön Toteuttaa samat mekanismit datan käsittelyyn kuin QDrag Käyttö erilaista riippuen käyttöjärjestelmästä Esim MAC OS: find buffer

Datan asettaminen leikepöydälle settext() setpixmap() setmimedata() QClipboard *clipboard = QApplication::clipboard();

Datan lukeminen leikepöydältä text() image() mimedata() QClipboard *clipboard = QApplication::clipboard(); // Tyhjää leikepöytä clipboard->clear();

Clipboard - signaalit void datachanged () Kutsutaan kun data leikepöydällä muuttuu void changed ( QClipboard::Mode mode ) Kutsutaan kun kyseisen mode:n data leikepöydällä muuttuu enum QClipboard::Mode QClipboard::Clipboard QClipboard::Selection (X11) QClipboard::FindBuffer (Mac OS)

QSettings Abstrahoi sovellusasetusten tallentamisen: asetukset voidaan tallentaa alustariippumattomasti - Rekisteri (Windows) - Ini-tiedosto (Unix) - XML-tiedosto (Mac) Käyttää hyväkseen sovelluksen nimeä ja organisaation nimeä QCoreApplication::setOrganizationName("Joku_lafka"); QCoreApplication::setApplicationName("Huippusofta");

QSettings Tallentaa asetukset avain-arvo-pareina: (QString avain, QVariant arvo) value(), setvalue(), contains(), remove(), clear() Hierarkkisuus begingroup endgroup Soveltuu hyvin asetuksien säilömiseen, mutta ei tarkoitettu suurien datamäärien tallentamiseen

QSettings Esimerkki Widget::Widget(QWidget *parent){ QCoreApplication::setOrganizationName("Grako2013"); QCoreApplication::setApplicationName("esim_luento7"); QSettings settings; QVariant v = settings.value("mainwindow/pos",qvariant()); if(v.isvalid()){ QPoint p = v.topoint(); this->move(p); } } Widget::~Widget(){ QSettings settings; settings.setvalue("mainwindow/pos",pos()); delete ui; }

QFile Rajapinta tiedostoon lukemiselle ja kirjoittamiselle. Käyttää / tiedostoeroittimena huolimatta käyttöjärjestelmästä. Toteuttaa input/output rajapinnan QIODevice. Jäsenfunktioita: exists() remove() open() close() flush()

QFile esimerkki Qfile file( in.txt ); If (!file.open(qiodevice::readonly QIODevice::Text)) { return; } while(!file.atend()) { QString line = QString(file.readLine()); processline(line); }

QTextStream Tietovirta tekstin lukemiseen ja kirjoittamiseen 3 Tapaa lukea tekstiä kasa kerrallaan readline() tai readall() Sana kerrallaan >> operaattorilla Merkki kerrallaan >> operaattorilla Hoitaa tyyppimuunnokset automaattisesti Lisäksi funktioita tekstin asemointiin ja lukujen muotoiluun.

Tiedoston luku tietovirralla Qfile file( in.txt ); If (!file.open(qiodevice::readonly QIODevice::Text)) { return; } QTextStream in(&file); while(!in.atend()) { QString line = in.readline(); processline(line); }

Tiedoston kirjoitus tietovirralla Qfile file( in.txt ); If (!file.open(qiodevice::writeonly QIODevice::Text)) { } return; QTextStream out(&file); out << Tekstiä tiedostoon ja numero << 6 << \n ;

QDataStream Käyttöjärjestelmästä riippumaton binääriformaatti Toteuttaa C++:n perustietotyyppien sarjallistamisen. Monimutkaisempi data sarjallistetaan jakamalla se perustietotyypeiksi. Myös osaa Qt:n tietorakenteista: QList, QHash, QLinkedList, QVector ja QMap voidaan käyttää.

Virtaan kirjoittaminen QFile file("file.dat"); file.open(qiodevice::writeonly); QDataStream out(&file); out<<"kissoja on "; //merkkijonon serialisointi out << (qint32)7; //... ja kokonaisluku

Virrasta lukeminen QFile file("file.dat"); file.open(qiodevice::readonly); QDataStream in(&file); QString s; qint32 kissoja; in >> s >> kissoja;

Binääri- vai tekstiformaatti? Binääri Tehokkaampaa, kompaktimpaa Muutosherkkää Versiointi Versionumeron kovakoodaus DataStream::setVersion() Kryptisempää voi olla hyvä tai huono asia Teksti Selkokielistä Helposti muiden ohjelmien käytössä Helposti muokattavaa

Undo Redo Toteutusvaihtoehtoja 1)Tallennetaan ohjelman tila talteen jokaisen toiminnon yhteydessä Esim. sarjallistetaan muistiin QByteArray-oliona Helppoa, mutta hyvin tehotonta, käyttökelpoinen vain harvoissa tapauksissa 2) Pidetään kirjaa tehdyistä toiminnoista Command pattern Qt:n Undo framework

Undo framework Kaikki toiminnot suoritetaan komentoina, jotka tallennetaan undo-pinoon. Jokainen komento osaa peruuttaa itsensä, jolloin on mahdollista palata suorituksessa taaksepäin.

Undo framework QUndoCommand Kantaluokka undo-pinoon laitettaville komennoille QUndoStack Lista suoritetuista komennoista QUndoGroup Joukko undo-pinoja (erilliset pinot esim. erillisille avatuille dokumenteille, yksi aktiivinen pino) QUndoView Widgetti, joka näyttää undo-pinon sisällön ja antaa siirtyä pinossa.

Undo framework class AppendText : public QUndoCommand { public: AppendText(QString *doc, const QString &text) : m_document(doc), m_text(text) { settext("append text"); } virtual void undo() { m_document->chop(m_text.length()); } virtual void redo() { m_document->append(m_text); } private: QString *m_document; QString m_text; };

Undo framework MyCommand *command1 = new MyCommand(); stack->push(command1); MyCommand *command2 = new MyCommand(); stack->push(command2); stack->undo(); // poistaa command2:n pinosta MyCommand *command3 = new MyCommand(); stack->push(command3);