diff options
Diffstat (limited to 'PerlTQt/tutorials/t14/LCDRange.pm')
-rw-r--r-- | PerlTQt/tutorials/t14/LCDRange.pm | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/PerlTQt/tutorials/t14/LCDRange.pm b/PerlTQt/tutorials/t14/LCDRange.pm new file mode 100644 index 0000000..1647e85 --- /dev/null +++ b/PerlTQt/tutorials/t14/LCDRange.pm @@ -0,0 +1,67 @@ +package LCDRange; +use strict; +use TQt; +use TQt::isa qw(TQt::Widget); +use TQt::slots + setValue => ['int'], + setRange => ['int', 'int'], + setText => ['const char*']; +use TQt::signals + valueChanged => ['int']; +use TQt::attributes qw( + slider + label +); + +sub NEW { + my $class = shift; + my $s; + $s = shift if $_[0] and not ref $_[0]; + $class->SUPER::NEW(@_); + + init(); + setText($s) if $s; +} + + +sub init { + my $lcd = TQt::LCDNumber(2, this, "lcd"); + + slider = TQt::Slider(&Horizontal, this, "slider"); + slider->setRange(0, 99); + slider->setValue(0); + + label = TQt::Label(" ", this, "label"); + label->setAlignment(&AlignCenter); + + $lcd->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); + this->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SIGNAL('valueChanged(int)')); + + setFocusProxy(slider); + + my $l = TQt::VBoxLayout(this); + $l->addWidget($lcd, 1); + $l->addWidget(slider); + $l->addWidget(label); +} + +sub value { slider->value } + +sub text { label->text } + +sub setValue { slider->setValue(shift) } + +sub setRange { + my($minVal, $maxVal) = @_; + if($minVal < 0 || $maxVal > 99 || $minVal > $maxVal) { + warn "LCDRange::setRange($minVal,$maxVal)\n" . + "\tRange must be 0..99\n" . + "\tand minVal must not be greater than maxVal\n"; + return; + } + slider->setRange($minVal, $maxVal); +} + +sub setText { label->setText(shift) } + +1; |