summaryrefslogtreecommitdiffstats
path: root/PerlQt/tutorials/t8/CannonField.pm
diff options
context:
space:
mode:
Diffstat (limited to 'PerlQt/tutorials/t8/CannonField.pm')
-rw-r--r--PerlQt/tutorials/t8/CannonField.pm43
1 files changed, 43 insertions, 0 deletions
diff --git a/PerlQt/tutorials/t8/CannonField.pm b/PerlQt/tutorials/t8/CannonField.pm
new file mode 100644
index 0000000..28e4986
--- /dev/null
+++ b/PerlQt/tutorials/t8/CannonField.pm
@@ -0,0 +1,43 @@
+package CannonField;
+use strict;
+use Qt;
+use Qt::isa qw(Qt::Widget);
+use Qt::signals
+ angleChanged => ['int'];
+use Qt::slots
+ setAngle => ['int'];
+use Qt::attributes qw(
+ ang
+);
+use POSIX qw(atan);
+
+sub angle () { ang }
+
+sub NEW {
+ shift->SUPER::NEW(@_);
+
+ ang = 45;
+ setPalette(Qt::Palette(Qt::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 = Qt::Painter(this);
+ $p->drawText(200, 200, $s);
+}
+
+sub sizePolicy {
+ Qt::SizePolicy(&Qt::SizePolicy::Expanding, &Qt::SizePolicy::Expanding);
+}
+
+1;