Development/Tutorials/Qt4 Ruby Tutorial/Chapter 06/fi: Difference between revisions
Centerlink (talk | contribs) (Created page with "=== Sovelluksen suorittaminen ===") |
Centerlink (talk | contribs) (Created page with "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...") |
||
Line 130: | Line 130: | ||
=== Sovelluksen suorittaminen === | === 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. | |||
=== Exercises === | === Exercises === |
Revision as of 11:34, 26 September 2011
Development/Tutorials/Qt4 Ruby Tutorial/Chapter 06
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
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!
Files:
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.
Exercises
Initialize each slider with a different/random value on startup.