diff options
Diffstat (limited to 'PerlTQt/tutorials/t8/CannonField.pm')
-rw-r--r-- | PerlTQt/tutorials/t8/CannonField.pm | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/PerlTQt/tutorials/t8/CannonField.pm b/PerlTQt/tutorials/t8/CannonField.pm new file mode 100644 index 0000000..1c23244 --- /dev/null +++ b/PerlTQt/tutorials/t8/CannonField.pm @@ -0,0 +1,43 @@ +package CannonField; +use strict; +use TQt; +use TQt::isa qw(TQt::Widget); +use TQt::signals + angleChanged => ['int']; +use TQt::slots + setAngle => ['int']; +use TQt::attributes qw( + ang +); +use POSIX qw(atan); + +sub angle () { ang } + +sub NEW { + shift->SUPER::NEW(@_); + + ang = 45; + setPalette(TQt::Palette(TQt::Color(250, 250, 200))); +} + +sub setAngle { + my $degrees = shift; + $degrees = 5 if $degrees < 5; + $degrees = 70 if $degrees > 70; + return if ang == $degrees; + ang = $degrees; + repaint(); + emit angleChanged(ang); +} + +sub paintEvent { + my $s = "Angle = " . ang; + my $p = TQt::Painter(this); + $p->drawText(200, 200, $s); +} + +sub sizePolicy { + TQt::SizePolicy(&TQt::SizePolicy::Expanding, &TQt::SizePolicy::Expanding); +} + +1; |