#!/usr/bin/perl -w # Pfad des Perl-Interpreters use strict; use Qt; # Laden des PerlQt-Moduls #............................................................ class LCDZahl package LCDZahl; use Qt; use Qt::isa qw(Qt::Widget); # Klasse LCDZahl erbt Qt::Widget use Qt::attributes qw( slider ); # Festlegen der Attributnamen use Qt::slots setValue => [ 'int' ]; use Qt::signals valueChanged => [ 'int' ]; sub NEW { #.... LCDZahl-Konstruktor shift->SUPER::NEW(@_[5..$#_]); my $titel = shift; my $ziffernzahl = shift; my $zsystem = shift; my $hintergrundFarbe = shift; my $stil = shift; my $text = Qt::Label( this ); $text->setGeometry( 0, 0, 150, 20 ); $text->setText( $titel ); $text->setAlignment( &Qt::AlignCenter ); my $lcd = Qt::LCDNumber( this ); $lcd->setGeometry( 0, 20, 150, 150 ); $lcd->setNumDigits( $ziffernzahl ); $lcd->setMode( $zsystem ); $lcd->setBackgroundColor( $hintergrundFarbe ); $lcd->setSegmentStyle( $stil ); $lcd->display( 100 ); my $slider = Qt::Slider( 0, 65535, 1, 100, &Qt::Horizontal, this ); $slider->setGeometry( 0, 180, 150, 20 ); $slider->setValue( 100 ); $lcd->connect( $slider, SIGNAL 'valueChanged(int)', SLOT 'display(int)'); this->connect( $slider, SIGNAL 'valueChanged(int)', SIGNAL 'valueChanged(int)' ); slider = $slider; } sub value { return this->slider->value(); } #.................................................... Slotroutinen sub setValue { my $value = shift; this->slider->setValue( $value ); } #..................................................................... main package main; use LCDZahl; my $app = Qt::Application(\@ARGV); my $mywidget = Qt::Widget; $mywidget->setGeometry( 10, 10, 600, 300 ); $mywidget->setMinimumSize( 200, 300 ); my $blaugruen = Qt::Color( 0, 255, 255 ); my @z; $z[0] = LCDZahl( "Dual", 16, &Qt::LCDNumber::BIN, $blaugruen, &Qt::LCDNumber::Flat, $mywidget ); $z[0]->setGeometry(0, 10, 150, 200); $z[1] = LCDZahl( "Oktal", 6, &Qt::LCDNumber::OCT, &Qt::darkBlue, &Qt::LCDNumber::Outline, $mywidget ); $z[1]->setGeometry(150, 10, 150, 200); $z[2] = LCDZahl( "Dezimal", 5, &Qt::LCDNumber::DEC, &Qt::darkGray, &Qt::LCDNumber::Filled, $mywidget ); $z[2]->setGeometry(300, 10, 150, 200); $z[3] = LCDZahl( "Hexadezimal", 4, &Qt::LCDNumber::HEX, &Qt::darkYellow, &Qt::LCDNumber::Filled, $mywidget ); $z[3]->setGeometry(450, 10, 150, 200); my $i; my $j; for ($i=0; $i<4; $i++) { for ($j=0; $j < 4; $j++) { if ($i != $j) { $z[$j]->connect( $z[$i], SIGNAL 'valueChanged(int)', SLOT 'setValue(int)'); } } } my $quit = Qt::PushButton( "Quit", $mywidget ); $quit->setGeometry( 0, 240, 600, 40 ); $quit->setFont( Qt::Font( "Times", 18, &Qt::Font::Bold ) ); $quit->setPaletteBackgroundColor( &Qt::yellow ); $app->connect( $quit, SIGNAL 'clicked()', SLOT 'quit()' ); $app->setMainWidget($mywidget); $mywidget->show(); exit $app->exec();