#!/usr/bin/perl -w # Pfad des Perl-Interpreters use strict; #......................................................... class MalFenster package MalFenster; use Qt; # Laden des PerlQt-Moduls use Qt::isa qw(Qt::Widget); # Klasse MalFenster erbt Qt::Widget use Qt::attributes qw( farbe letztepos ); sub NEW { # MalFenster-Konstruktor shift->SUPER::NEW(@_); farbe = &Qt::black; # voreingestellte Farbe ist schwarz setPaletteBackgroundColor( &Qt::white ); setGeometry( 50, 50, 400, 400 ); show(); } sub DESTROY { } # Destruktor; kein Code #.............................................. Virtuelle Methoden sub mousePressEvent { my $event = shift; letztepos = $event->pos(); } sub mouseMoveEvent { my $event = shift; my $wMaler = Qt::Painter; $wMaler->begin( this ); $wMaler->setPen( farbe ); $wMaler->drawLine( letztepos, $event->pos() ); $wMaler->end(); letztepos = $event->pos(); } sub mouseDoubleClickEvent { my $wMaler = Qt::Painter; $wMaler->begin( this ); $wMaler->eraseRect( 0, 0, width(), height() ); $wMaler->end(); } sub keyPressEvent { my $event = shift; if ( $event->key() == &Qt::Key_W ) { farbe = &Qt::white; } elsif ( $event->key() == &Qt::Key_S ) { farbe = &Qt::black; } elsif ( $event->key() == &Qt::Key_R ) { farbe = &Qt::red; } elsif ( $event->key() == &Qt::Key_B ) { farbe = &Qt::blue; } elsif ( $event->key() == &Qt::Key_G ) { farbe = &Qt::green; } elsif ( $event->key() == &Qt::Key_L ) { farbe = &Qt::yellow; } } #..................................................................... main package main; use Qt; # Laden des PerlQt-Moduls use MalFenster; my $app = Qt::Application(\@ARGV); my $mywidget = MalFenster; $app->setMainWidget($mywidget); exit $app->exec();