use
Qt::slots
'setValue(int)'
,
'setRange(int, int)'
;
@ISA
=
qw(Qt::Widget)
;
sub
new {
my
$self
=
shift
->SUPER::new(
@_
);
my
$lcd
= Qt::LCDNumber->new(2,
$self
,
'lcd'
);
$lcd
->move(0, 0);
my
$sBar
=
Qt::ScrollBar->new(0, 99,
1, 10,
0,
Qt::ScrollBar::Horizontal,
$self
,
'scrollbar'
);
$lcd
->
connect
(
$sBar
,
'valueChanged(int)'
,
'display(int)'
);
$self
->
connect
(
$sBar
,
'valueChanged(int)'
,
'valueChanged(int)'
);
@$self
{
'sBar'
,
'lcd'
} = (
$sBar
,
$lcd
);
return
$self
;
}
sub
value {
return
shift
->{
'sBar'
}->value() }
sub
setValue {
my
$self
=
shift
;
my
$value
=
shift
;
$self
->{
'sBar'
}->setValue(
$value
);
}
sub
setRange {
my
$self
=
shift
;
my
$minVal
=
shift
;
my
$maxVal
=
shift
;
if
(
$minVal
< 0 ||
$maxVal
> 99 ||
$minVal
>
$maxVal
) {
warn
"LCDRange::setRange(
$minVal
,
$maxVal
)
Range must be 0..99
and minVal must not be greater than maxVal";
return
;
}
$self
->{
'sBar'
}->setRange(
$minVal
,
$maxVal
);
}
sub
resizeEvent {
my
$self
=
shift
;
my
(
$sBar
,
$lcd
) =
@$self
{
'sBar'
,
'lcd'
};
$lcd
->resize(
$self
->width(),
$self
->height() - 16 - 5);
$sBar
->setGeometry(0,
$lcd
->height() + 5,
$self
->width(), 16);
}