#!/usr/bin/perl -w package MyWidget; use Qt 2.0; import Qt::app; use CannonField; use LCDRange; @ISA = qw(Qt::Widget); sub new { my $self = shift->SUPER::new(@_); $self->setMinimumSize(500, 355); my $quit = Qt::PushButton->new('Quit', $self, 'quit'); $quit->setGeometry(10, 10, 75, 30); $quit->setFont(Qt::Font->new('Times', 18, Qt::Font::Bold)); $app->connect($quit, 'clicked()', 'quit()'); my $angle = LCDRange->new($self, 'angle'); $angle->setRange(5, 70); $angle->setGeometry(10, $quit->y() + $quit->height() + 10, 75, 130); my $force = LCDRange->new($self, 'force'); $force->setRange(10, 50); $force->setGeometry(10, $angle->y() + $angle->height() + 10, 75, 130); my $cannonField = CannonField->new($self, 'cannonField'); $cannonField->move($angle->x() + $angle->width() + 10, $angle->y()); $cannonField->setBackgroundColor(Qt::Color->new(250, 250, 200)); $cannonField->connect($angle, 'valueChanged(int)', 'setAngle(int)'); $angle->connect($cannonField, 'angleChanged(int)', 'setValue(int)'); $cannonField->connect($force, 'valueChanged(int)', 'setForce(int)'); $force->connect($cannonField, 'forceChanged(int)', 'setValue(int)'); $angle->setValue(60); $force->setValue(25); @$self{'quit', 'angle', 'force', 'cannonField'} = ($quit, $angle, $force, $cannonField); return $self; } sub resizeEvent { my $self = shift; my $cannonField = $self->{'cannonField'}; $cannonField->resize($self->width() - $cannonField->x() - 10, $self->height() - $cannonField->y() - 10); } package main; use Qt 2.0; import Qt::app; $w = MyWidget->new; $w->setGeometry(100, 100, 500, 355); $app->setMainWidget($w); $w->show(); exit $app->exec();