Translate

Jump to: navigation, search
Settings

Information about the group Translation of the wiki page Development/Tutorials/Qt4 Ruby Tutorial/Chapter 08.
Development/Tutorials/Qt4 Ruby Tutorial/Chapter 08Current message text
...Chapter 08/Page display title/fiKehitys/Oppikurssit/Qt4 Ruby -oppikurssi/Kappale 08
...t4 Ruby Tutorial/Chapter 08/1/fiTutorialBrowser
...t4 Ruby Tutorial/Chapter 08/2/fiQt4 Ruby -oppikurssi
...t4 Ruby Tutorial/Chapter 08/3/fiValmistaudutaan taisteluun
...t4 Ruby Tutorial/Chapter 08/4/fiOppikurssi 7 - Yksi asia johtaa toiseen
...t4 Ruby Tutorial/Chapter 08/5/fiOppikurssi 9 - Kanuunalla kykenet
...t4 Ruby Tutorial/Chapter 08/6/fi== Valmistaudutaan taisteluun ==
...t4 Ruby Tutorial/Chapter 08/7/fi[[Image:Qt4_Ruby_Tutorial_Screenshot_8.png|center]]
...t4 Ruby Tutorial/Chapter 08/8/fiTiedostot:
...t4 Ruby Tutorial/Chapter 08/9/fi=== Yleistä ===
...4 Ruby Tutorial/Chapter 08/10/fiTässä esimerkissä esittelemme ensimmäisen räätälöidyn käyttöliittymäkomponentin, joka voi piirtää itsensä. Lisäämme myös hyödyllisen näppäimistörajapinnan (kahdella koodirivillä).
...4 Ruby Tutorial/Chapter 08/11/fi=== Läpikäynti rivi riviltä ===
...4 Ruby Tutorial/Chapter 08/12/fiTämä tiedosto on hyvin samanlainen kuin lcdrange.rb [[Special:myLanguage/Development/Tutorials/Qt4_Ruby_Tutorial/Chapter_07|Kappaleessa 7]]. Olemme lisänneet yhden välin: '''<tt>setRange()</tt>'''.
...4 Ruby Tutorial/Chapter 08/13/fiLisäämme nyt mahdollisuuden asettaa '''<tt>LCDRange</tt>'''-lukualueen. Tähän asti se on ollut kiinteä välillä 0 ... 99.
...4 Ruby Tutorial/Chapter 08/14/fi'''<tt>setRange()</tt>'''-väli asettaa liukukytkimen lukualueen '''<tt>LCDRange</tt>'''. Koska olemme asettaneet [http://doc.qt.nokia.com/latest/qlcdnumber.html QLCDNumber] näyttämään aina kaksi numeroa, haluamme rajoittaa mahdollisen lukualueen '''<tt>minVal</tt>''' ja '''<tt>maxVal</tt>''' ylivuoden välttämiseksi käyttöliittymäkomponentissa [http://doc.qt.nokia.com/latest/qlcdnumber.html QLCDNumber]. (Meillä olisi lupa laskea arvot aina arvoon -9, mutta valitsemme olemaan tekemättä sitä.) Jos argumentit ovat virheellisiä, käytämme Qt:n [http://doc.qt.nokia.com/latest/qtglobal.html#qWarning QtGlobal::qWarning()]-funktiota julkaisemaan varoituksen käytäjälle ja palaamme välittömästi. [http://doc.qt.nokia.com/latest/qtglobal.html#qWarning QtGlobal::qWarning()] on '''<tt>printf</tt>'''-tyyppinen funktio, joka oletuksena lähettää tulosteensa kohteeseen '''<tt>$stderr</tt>'''. Jos haluat, voit asentaa oman käsittelijäfunktion käyttäen [http://doc.qt.nokia.com/latest/qtglobal.html#qInstallMsgHandler QtGlobal::qInstallMsgHandler()]-objektia.
...4 Ruby Tutorial/Chapter 08/15/fiTämä saa nestekidenumeromme näyttämään paremmilta. En ole varma, mutta uskon, että mikä tekee sen mahdolliseksi on paletin asettaminen (katso seuraava lohko). Tiedän nyt, on että tällä rivillä ei ollut vaikutusta kun sitä yritettiin edellisessä kappaleessa, mutta se toimii tässä.
...4 Ruby Tutorial/Chapter 08/16/fiKonstruktori alustaa kulma-arvon 45 asteeseen ja asettaa räätälöidyn paletin tälle käyttöliittymäkomponentille.
...4 Ruby Tutorial/Chapter 08/17/fiTämä paletti käyttää indikoitua väriä taustana ja poimii muita värejä siihen sopivasti. (Tälle käyttöliittymäkomponentille käytetään todellisuudessa vain tausta- ja tekstivärit). Kutsumme sitten setAutoFillBackground(true) kertomaan Qt:lle, että taustan voi täyttää automaattisesti.
...4 Ruby Tutorial/Chapter 08/18/fi[http://doc.qt.nokia.com/latest/qcolor.html Qt::Color] määriteltiin RGB (punainen-vihreä-sininen) -triplettinä, missä jokainen arvo on välillä 0 (tumma) ja 255 (kirkas). Voisimme myös käyttää ennakolta määriteltyjä värejä kuten [http://doc.qt.nokia.com/latest/qt.html#GlobalColor-enum Qt::yellow] eikä RGB-arvojen määrittelyjä.
...4 Ruby Tutorial/Chapter 08/19/fiTämä funktio asettaa kulma-arvon. Olemme valinneet lailliseksi arvoalueeksi 5 ... 70 ja säätäneet annetun asetenumeron sen mukaan. Olemme valinneet, että emme julkaise varoitusta, jos uusi kulma on lukualueen ulkopuolella.
...4 Ruby Tutorial/Chapter 08/20/fiJos uusi kulma on sama kuin vanha, palaamme välittömästi. On tärkeää lähettää vain '''<tt>angleChanged()</tt>'''-signaali kun kulma on todella muuttunut.
...4 Ruby Tutorial/Chapter 08/21/fiSitten asetamme uuden kulman ja piirrämme käyttöliittymäkomponenttimme. [http://doc.qt.nokia.com/latest/qwidget.html#update Qt::Widget::update()]-funktio tyhjentää käyttöliittymäkomponentin (tavallisesti täyttämällä sen taustavärin) ja asettaa piirtämistapahtuman käyttöliittymäkomponentille. Tästä seuraa kutsu käyttöliittymäkomponentin piirtämistapahtumafunktiolle.
...4 Ruby Tutorial/Chapter 08/22/fiLopuksi lähetämme '''<tt>angleChanged()</tt>'''-signaalin kertomaan ulkopuoliselle maailmalle, että kulma on muuttunut. Avainsana '''<tt>emit</tt>''' on ainutlaatuinen Qt:lle ja ei ole säännöllistä Ruby-syntaksia.
...4 Ruby Tutorial/Chapter 08/23/fiTämä oli ensimmäinen yrityksemme kirjoittaa piirtämistapahtumakäsittelijä. Tapahtuma.argumentti sisältää piirtämistapahtuman kuvauksen. [http://doc.qt.nokia.com/latest/qpaintevent.html Qt::PaintEvent] sisältää käyttöliittymäkomponentin alueen, joka on päivitettävä. Toistaiseksi olemma laiskoja ja piirrämme kaikki.
...4 Ruby Tutorial/Chapter 08/24/fiKoodimme näyttää kulma-arvon käyttöliittymäkomponentissa kiinteässä paikassa. Luomme [http://doc.qt.nokia.com/latest/qpainter.html Qt::Painter]-toiminnon tälle käyttöliittymäkomponentille ja käytämme sitä merkkijonon piirtämiseen. Palaamme [http://doc.qt.nokia.com/latest/qpainter.html Qt::Painter]-toimintoon myöhemmin; se voi tehdä todella monia asioita.
...4 Ruby Tutorial/Chapter 08/25/fiKonstruktorissa luomme ja asetamme LCDRange-käyttöliittymäkomponentin. Asetamme LCDRange-komponentin hyväksymään kulmat välillä 5 ... 70 astetta.
...4 Ruby Tutorial/Chapter 08/26/fiLuomme CannonField-käyttöliittymäkomponentin.
...4 Ruby Tutorial/Chapter 08/27/fiTässä yhdistämme '''<tt>LCDRange</tt>'''-komponentin '''<tt>valueChanged()</tt>'''-signaalin '''<tt>CannonField</tt>'''-kentän '''<tt>setValue()</tt>'''-väliin . Tämä päivittää '''<tt>CannonField</tt>'''-kentän kulma-arvon joka kerran, kun käyttäjä käyttää '''<tt>LCDRange</tt>'''-komponenttia. Teemme myös päinvastaisen yhteyden niin että kulman muuttuminen '''<tt>CannonField</tt>'''-kentässä päivittää '''<tt>LCDRange</tt>'''-arvon. Esimerkissämme emme koskaan muuta '''<tt>CannonField</tt>'''-kulmaa suoraan; mutta tekemällä viimeisen connect() varmistamme, että mikään tulevaisuuden muutos ei häiritse noiden kahden arvon välistä synkronointia.
...4 Ruby Tutorial/Chapter 08/28/fiTämä kuvaa komponenttiohjelmoinnin voimaa ja oikeaa kapselointia.
...4 Ruby Tutorial/Chapter 08/29/fiHuomaa kuinka on tärkeää lähettää '''<tt>angleChanged()</tt>'''-signaali vain silloin kun kulma todella muuttuu. Jos sekä '''<tt>LCDRange</tt>''' että '''<tt>CannonField</tt>''' ohittivat tämän tarkistuksen, ohjelma siirtyisi päättymättömään silmukkaan toisen arvon ensimmäisellä muutoksella.
...4 Ruby Tutorial/Chapter 08/30/fiToistaiseksi olemme käyttäneet [http://doc.qt.nokia.com/latest/qgridlayout.html Qt::VBoxLayout]-luokkaa ulkoasuhallintaan. Nyt haluamme kuintenkin hallita ulkoasua paremmin, ja vaihdamme tehokkaampaan [http://doc.qt.nokia.com/latest/qgridlayout.html Qt::GridLayout]-luokkaan. [http://doc.qt.nokia.com/latest/qgridlayout.html Qt::GridLayout] ei ole käyttöliittymäkomponenttit; se on erilainen luokka, joka hallitsee minkä tahansa käyttöliittymäkomponentin lapsia.
...4 Ruby Tutorial/Chapter 08/31/fiMeidän ei tarvitse määritellä mitään mittoja [http://doc.qt.nokia.com/latest/qvboxlayout.html Qt::GridLayout]-konstruktorille. Luokka [http://doc.qt.nokia.com/latest/qgridlayout.html Qt::GridLayout] määrittelee rivien ja sarakkeiden lukumäärän niiden rasterisolujen perusteella, jotka otamme käyttöön.
...4 Ruby Tutorial/Chapter 08/32/fi[[Image:Qt4_Ruby_Tutorial_Screenshot_8-layout.png]][[Image:Qt4_Ruby_Tutorial_Screenshot_8-reallayout.png]]
...4 Ruby Tutorial/Chapter 08/33/fiYllä oleva kuva näyttää asettelun, jonka yritämme saavuttaa. Vasen puoli näyttää asettelun kytkentäkaaviopuolen; oikea puoli on ohjelman todellinen näytönkaappaus. ''(Nokia omistaa näiden kahden kuvan copyright-oikeudet.)''
...4 Ruby Tutorial/Chapter 08/34/fiLisäämme <strong>Quit</strong>-painikkeen rasterin vasempaan yläkulmaan, ts. solun koordinaatit ovat (0, 0).
...4 Ruby Tutorial/Chapter 08/35/fiLaitamme kulman '''<tt>LCDRange</tt>''' soluun (1, 0).
...4 Ruby Tutorial/Chapter 08/36/fiAnnamme ''<tt>CannonField</tt>'''-objektin varata solut (1, 1) ja (2, 1).
...4 Ruby Tutorial/Chapter 08/37/fiKerromme [http://doc.qt.nokia.com/latest/qgridlayout.html Qt::GridLayout]-luokalle, että oikea sarake (sarake 1) on venytettävä, venytyskertoimella 10. Koska vasen sarake ei ole venytettävä (sen venytyskerroin on 0, oletusarvo), [http://doc.qt.nokia.com/latest/qgridlayout.html Qt::GridLayout]-luokka yrittää pitää vasemmanpuoleisen käyttöliittymäkomponentin koon muuttumattomana ja muuttaa vain '''<tt>CannonField</tt>'''-kenttää kun '''<tt>MyWidget</tt>'''-käyttöliittymäkomponentin koko muuttuu.
...4 Ruby Tutorial/Chapter 08/38/fiTässä erityisessä esimerkissä mikä tahansa venytyskerroin, joka on suurempi kuin 0 sarakkeessa 1 aiheuttaisi saman vaikutuksen. Mutkikkaammissa asetteluissa voimme käyttää venytyskerrointa kertomaan, että tietty sarake tai rivi pitäisi venyttää kaksi kertaan niin nopeasti kuin joku toinen asettamalla sopivat venytyskertoimet.
...4 Ruby Tutorial/Chapter 08/39/fiAsetamme alustuskulma-arvon. Huomaa, että tämä liipaisee yhteyden '''<tt>LCDRange</tt>'''-komponentista '''<tt>CannonField</tt>'''-kenttään.
...4 Ruby Tutorial/Chapter 08/40/fiViimeinen toimemme on asettaa '''<tt>angle</tt>'''-näppäimistökohdistus niin että näppäimistösyöttö menee oletuksena '''<tt>LCDRange</tt>'''-käyttöliittymäkomponentille.
...4 Ruby Tutorial/Chapter 08/41/fi=== Sovelluksen suorittaminen ===
...4 Ruby Tutorial/Chapter 08/42/fiKun liukukytkintä käytetään '''<tt>CannonField</tt>''' näyttää uuden kulma-arvon. Kokoa muutettaessa '''<tt>CannonField</tt>'''-kentälle annetaan tilaa niin paljon kuin on mahdollista.
...4 Ruby Tutorial/Chapter 08/43/fi=== Harjoitukset ===
...4 Ruby Tutorial/Chapter 08/44/fiYritä muuttaa ikkuna kokoa. Mitä tapahtuu, jos yrität tehdä siitä todella kapean tai matalan?
...4 Ruby Tutorial/Chapter 08/45/fiMitä tapahtuu ikkunan kokoa muutettaessa, jos annat vasemmanpuoleiselle sarakkeelle venytyskertoimen nollasta poikkeavan arvon?
...4 Ruby Tutorial/Chapter 08/46/fiYritä muuttaa tekstiä "Quit" tekstiksi "&Quit". Kuinka painikkeen ulkoasu muuttuu? (Ulkoasun mahdollinen muuttuminen riippuu käyttöjärjestelmäalustasta.) Mitä tapahtuu, jos painat näppäimiä <strong>Alt+Q</strong> ohjelman suorituksen aikana?
...4 Ruby Tutorial/Chapter 08/47/fiKeskitä teksti '''<tt>CannonField</tt>'''-kentässä.
...4 Ruby Tutorial/Chapter 08/48/fi[[Category:Ruby]]
NavigationShowing 49 messages.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal