1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#!/usr/bin/env ruby
$VERBOSE = true; $:.unshift File.dirname($0)
require 'Qt4'
require 'lcdrange.rb'
require 'cannon.rb'
class MyWidget < Qt::Widget
def initialize(parent = nil)
super
quit = Qt::PushButton.new('Quit')
quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
connect(quit, SIGNAL('clicked()'), $qApp, SLOT('quit()'))
angle = LCDRange.new( self )
angle.range = 5..70
force = LCDRange.new( self )
force.range = 10..50
cannonField = CannonField.new( self )
connect( angle, SIGNAL('valueChanged(int)'),
cannonField, SLOT('setAngle(int)') )
connect( cannonField, SIGNAL('angleChanged(int)'),
angle, SLOT('setValue(int)') )
connect( force, SIGNAL('valueChanged(int)'),
cannonField, SLOT('setForce(int)') )
connect( cannonField, SIGNAL('forceChanged(int)'),
force, SLOT('setValue(int)') )
leftLayout = Qt::VBoxLayout.new()
leftLayout.addWidget( angle )
leftLayout.addWidget( force )
gridLayout = Qt::GridLayout.new
gridLayout.addWidget( quit, 0, 0 )
gridLayout.addLayout(leftLayout, 1, 0)
gridLayout.addWidget( cannonField, 1, 1, 2, 1 )
gridLayout.setColumnStretch( 1, 10 )
setLayout(gridLayout)
angle.setValue( 60 )
force.setValue( 25 )
angle.setFocus()
end
end
app = Qt::Application.new(ARGV)
widget = MyWidget.new
widget.setGeometry( 100, 100, 500, 355 )
widget.show
app.exec
|