Development/Tutorials/Qt4 Ruby Tutorial/Chapter 06/fi: Difference between revisions
Centerlink (talk | contribs) (Created page with "Oppikurssi 7 - Yksi asia johtaa toiseen") |
(Updating to match new version of source page) |
||
(15 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
<languages /> | <languages /> | ||
{{TutorialBrowser| | {{TutorialBrowser| | ||
Line 9: | Line 9: | ||
next=[[Special:myLanguage/Development/Tutorials/Qt4_Ruby_Tutorial/Chapter_07|Oppikurssi 7 - Yksi asia johtaa toiseen]] | next=[[Special:myLanguage/Development/Tutorials/Qt4_Ruby_Tutorial/Chapter_07|Oppikurssi 7 - Yksi asia johtaa toiseen]] | ||
}} | }} | ||
== | == Rakennetaan Blocks Galore! == | ||
[[Image:Qt4_Ruby_Tutorial_Screenshot_6.png|center]] | [[Image:Qt4_Ruby_Tutorial_Screenshot_6.png|center]] | ||
Tiedostot: | |||
* [http://www.darshancomputing.com/qt4-qtruby-tutorial/tutorial/t6/t6.rb t6.rb] | * [http://www.darshancomputing.com/qt4-qtruby-tutorial/tutorial/t6/t6.rb t6.rb] | ||
=== | === Yleistä === | ||
Tämä esimerkki näyttää, kuinka kaksi käyttöliittymäkomponenttia kapseloidaan uuteen komponenttiin ja kuinka helppoa on käyttää monia käyttöliittymäkomponentteja. Ensimmäisen kerran käytämme räätälöityä käyttöliittymäkomponenttia lapsikäyttöliittymäkomponenttina. | |||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 70: | Line 70: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === Läpikäynti rivi rivilltä === | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
class LCDRange < Qt::Widget | class LCDRange < Qt::Widget | ||
</syntaxhighlight> | </syntaxhighlight> | ||
'''<tt>LCDRange</tt>'''-käyttöliittymäkomponentti on ilman mitään API-sovellusrajapintaa. Sillä on vain konstruktorir. Tämä tyyppiset käyttöliittymäkomponentit eivät ole kovin hyödyllisiä, joten lisäämme jonkun API-sovellusrajapinnan myöhemmin. | |||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 94: | Line 94: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Tämä on nostettu suoraan '''<tt>MyWidget</tt>'''-konstruktorista [[Special:myLanguage/Development/Tutorials/Qt4_Ruby_Tutorial/Chapter_05|Kappaleessa 5]]. Ainoa ero on <strong>Quit</strong>-painike ja luokan uudelleennimeäminen. | |||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 100: | Line 100: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
'''<tt>MyWidget</tt>''', | '''<tt>MyWidget</tt>''' ei myöskään sisällä API-sovellusrajapintaa, paitsi konstruktorin. | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 110: | Line 110: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Painonappi, näyttää olevan, mitä '''<tt>LCDRange</tt>''' on nyt, on eroteltu niin että meillä voi olla yksi <strong>Quit</strong>-painike ja monia '''<tt>LCDRange</tt>'''-objekteja. | |||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 116: | Line 116: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Loimme [http://doc.qt.nokia.com/latest/qwidget.html Qt::Widget]-käyttöliittymäkomponentin [http://doc.qt.nokia.com/latest/qgridlayout.html Qt::GridLayout]-sijoittelulla, joka sisältää kolma saraketta. [http://doc.qt.nokia.com/latest/qgridlayout.html Qt::GridLayout]-sijoittelu järjestää käyttöliittymäkomponentit automaattisesti riveihin ja sarakkeisiin; voit määritellä rivien ja sarakkeiden lukumäärn, kun lisäät käyttöliittymäkomponentteja sijoitteluun, ja [http://doc.qt.nokia.com/latest/qgridlayout.html Qt::GridLayout]-sovittaa ne rasteriin. | |||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 126: | Line 126: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Loimme yhdeksän '''<tt>LCDRange</tt>'''-käyttöliittymäkomponenttia, jotka kaikki ovat rasteriobjektin lapsia, ja järjesteämme ne kolmeen riviin ja kolmeen sarakkeeseen. | |||
=== | === Sovelluksen suorittaminen === | ||
Tämä ohjelma näyttää, kuinka helppoa on käyttää monia käyttöliittymäkomponentteja samalla kertaa. Jokainen käyttäytyy kuin liukukytkin ja nestekidenumerot edellisessä kappaleessa. Taas erot ovat toteuttamisessa. | |||
=== | === Harjoitukset === | ||
Alusta jokainen liukukytkin eri/satunnaisarvolla käynnistymisen yhteydessä. | |||
[[Category:Ruby]] | [[Category:Ruby]] |
Latest revision as of 14:19, 18 July 2012
Tutorial Series | Qt4 Ruby -oppikurssi |
Previous | Oppikurssi 5 - Rakennetaan lohkoja |
What's Next | Oppikurssi 7 - Yksi asia johtaa toiseen |
Further Reading | n/a |
Rakennetaan Blocks Galore!
Tiedostot:
Yleistä
Tämä esimerkki näyttää, kuinka kaksi käyttöliittymäkomponenttia kapseloidaan uuteen komponenttiin ja kuinka helppoa on käyttää monia käyttöliittymäkomponentteja. Ensimmäisen kerran käytämme räätälöityä käyttöliittymäkomponenttia lapsikäyttöliittymäkomponenttina.
require 'Qt4'
class LCDRange < Qt::Widget
def initialize(parent = nil)
super()
lcd = Qt::LCDNumber.new(2)
slider = Qt::Slider.new(Qt::Horizontal)
slider.setRange(0, 99)
slider.setValue(0)
connect(slider, SIGNAL('valueChanged(int)'), lcd, SLOT('display(int)'))
layout = Qt::VBoxLayout.new()
layout.addWidget(lcd)
layout.addWidget(slider)
setLayout(layout)
end
end
class MyWidget < Qt::Widget
def initialize(parent = nil)
super()
quit = Qt::PushButton.new(tr('Quit'))
quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
connect(quit, SIGNAL('clicked()'), $qApp, SLOT('quit()'))
grid = Qt::GridLayout.new()
for row in 0..2
for column in 0..2
grid.addWidget(LCDRange.new(), row, column)
end
end
layout = Qt::VBoxLayout.new()
layout.addWidget(quit)
layout.addLayout(grid)
setLayout(layout)
end
end
app = Qt::Application.new(ARGV)
widget = MyWidget.new()
widget.show()
app.exec()
Läpikäynti rivi rivilltä
class LCDRange < Qt::Widget
LCDRange-käyttöliittymäkomponentti on ilman mitään API-sovellusrajapintaa. Sillä on vain konstruktorir. Tämä tyyppiset käyttöliittymäkomponentit eivät ole kovin hyödyllisiä, joten lisäämme jonkun API-sovellusrajapinnan myöhemmin.
def initialize(parent = nil)
super()
lcd = Qt::LCDNumber.new(2)
slider = Qt::Slider.new(Qt::Horizontal)
slider.setRange(0, 99)
slider.setValue(0)
connect(slider, SIGNAL('valueChanged(int)'), lcd, SLOT('display(int)'))
layout = Qt::VBoxLayout.new()
layout.addWidget(lcd)
layout.addWidget(slider)
setLayout(layout)
end
Tämä on nostettu suoraan MyWidget-konstruktorista Kappaleessa 5. Ainoa ero on Quit-painike ja luokan uudelleennimeäminen.
class MyWidget < Qt::Widget
MyWidget ei myöskään sisällä API-sovellusrajapintaa, paitsi konstruktorin.
def initialize(parent = nil)
super()
quit = Qt::PushButton.new(tr('Quit'))
quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
connect(quit, SIGNAL('clicked()'), $qApp, SLOT('quit()'))
Painonappi, näyttää olevan, mitä LCDRange on nyt, on eroteltu niin että meillä voi olla yksi Quit-painike ja monia LCDRange-objekteja.
grid = Qt::GridLayout.new()
Loimme Qt::Widget-käyttöliittymäkomponentin Qt::GridLayout-sijoittelulla, joka sisältää kolma saraketta. Qt::GridLayout-sijoittelu järjestää käyttöliittymäkomponentit automaattisesti riveihin ja sarakkeisiin; voit määritellä rivien ja sarakkeiden lukumäärn, kun lisäät käyttöliittymäkomponentteja sijoitteluun, ja Qt::GridLayout-sovittaa ne rasteriin.
for row in 0..2
for column in 0..2
grid.addWidget(LCDRange.new(), row, column)
end
end
Loimme yhdeksän LCDRange-käyttöliittymäkomponenttia, jotka kaikki ovat rasteriobjektin lapsia, ja järjesteämme ne kolmeen riviin ja kolmeen sarakkeeseen.
Sovelluksen suorittaminen
Tämä ohjelma näyttää, kuinka helppoa on käyttää monia käyttöliittymäkomponentteja samalla kertaa. Jokainen käyttäytyy kuin liukukytkin ja nestekidenumerot edellisessä kappaleessa. Taas erot ovat toteuttamisessa.
Harjoitukset
Alusta jokainen liukukytkin eri/satunnaisarvolla käynnistymisen yhteydessä.