#!/usr/bin/perl -w
package ConnectWidget;
use Qt 2.0;
@ISA = qw(Qt::Widget);
$MAXCOLORS = 40;
sub new {
my $self = shift->SUPER::new(@_);
$self->setBackgroundColor(Qt::white);
$self->{'down'} = 0;
$self->{'points'} = [];
for(my $i = 0; $i < $MAXCOLORS; $i++) {
$self->{'colors'}[$i] = Qt::Color->new(rand(255), rand(255), rand(255));
}
return $self;
}
sub paintEvent {
my $self = shift;
my($colors, $points) = @$self{'colors', 'points'};
my $count = @$points;
my $paint = Qt::Painter->new;
$paint->begin($self);
my($i, $j);
for($i = 0; $i < $count-1; $i++) {
for($j = $i+1; $j < $count; $j++) {
$paint->setPen($colors->[int(rand($MAXCOLORS))]);
$paint->drawLine($points->[$i], $points->[$j]);
}
}
$paint->end();
}
sub mousePressEvent {
my $self = shift;
$self->{'down'} = 1;
$self->{'points'} = [];
$self->erase();
}
sub mouseReleaseEvent {
my $self = shift;
$self->{'down'} = 0;
$self->update();
}
sub mouseMoveEvent {
my $self = shift;
my $e = shift;
if($self->{'down'}) {
my $paint = Qt::Painter->new;
$paint->begin($self);
push @{$self->{'points'}}, $e->pos();
$paint->drawPoint($e->pos());
$paint->end();
}
}
package main;
use Qt 2.0;
import Qt::app;
$connect = ConnectWidget->new;
$app->setMainWidget($connect);
$connect->show();
exit $app->exec();