diff options
Diffstat (limited to 'PerlQt/examples/buttongroups/ButtonsGroups.pm')
-rw-r--r-- | PerlQt/examples/buttongroups/ButtonsGroups.pm | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/PerlQt/examples/buttongroups/ButtonsGroups.pm b/PerlQt/examples/buttongroups/ButtonsGroups.pm new file mode 100644 index 0000000..0bb6c73 --- /dev/null +++ b/PerlQt/examples/buttongroups/ButtonsGroups.pm @@ -0,0 +1,104 @@ +package ButtonsGroups; +use strict; +use Qt; +use Qt::isa qw(Qt::Widget); +use Qt::slots + slotChangeGrp3State => []; +use Qt::attributes qw( + state + rb21 + rb22 + rb23 +); + +# +# Constructor +# +# Creates all child widgets of the ButtonGroups window +# + +sub NEW { + shift->SUPER::NEW(@_); + + # Create Widgets which allow easy layouting + my $vbox = Qt::VBoxLayout(this); + my $box1 = Qt::HBoxLayout($vbox); + my $box2 = Qt::HBoxLayout($vbox); + + # ------- first group + + # Create an exclusive button group + my $bgrp1 = Qt::ButtonGroup(1, &Horizontal, "Button Group &1 (exclusive)", this); + $box1->addWidget($bgrp1); + $bgrp1->setExclusive(1); + + # insert 3 radiobuttons + Qt::RadioButton("R&adiobutton 2", $bgrp1); + Qt::RadioButton("Ra&diobutton 3", $bgrp1); + + # ------- second group + + # Create a non-exclusive buttongroup + my $bgrp2 = Qt::ButtonGroup(1, &Horizontal, "Button Group &2 (non-exclusive)", this); + $box1->addWidget($bgrp2); + $bgrp2->setExclusive(0); + + # insert 3 checkboxes + Qt::CheckBox("&Checkbox 1", $bgrp2); + my $cb12 = Qt::CheckBox("C&heckbox 2", $bgrp2); + $cb12->setChecked(1); + my $cb13 = Qt::CheckBox("Triple &State Button", $bgrp2); + $cb13->setTristate(1); + $cb13->setChecked(1); + + # ----------- third group + + # create a buttongroup which is exclusive for radiobuttons and non-exclusive for all other buttons + my $bgrp3 = Qt::ButtonGroup(1, &Horizontal, "Button Group &3 (Radiobutton-exclusive)", this); + $box2->addWidget($bgrp3); + $bgrp3->setRadioButtonExclusive(1); + + # insert three radiobuttons + rb21 = Qt::RadioButton("Rad&iobutton 1", $bgrp3); + rb22 = Qt::RadioButton("Radi&obutton 2", $bgrp3); + rb23 = Qt::RadioButton("Radio&button 3", $bgrp3); + rb23->setChecked(1); + + # insert a checkbox + state = Qt::CheckBox("E&nable Radiobuttons", $bgrp3); + state->setChecked(1); + # ...and connect its SIGNAL clicked() with the SLOT slotChangeGrp3State() + this->connect(state, SIGNAL('clicked()'), SLOT('slotChangeGrp3State()')); + + # ----------- fourth group + + # create a groupbox which layouts its childs in a columns + my $bgrp4 = Qt::ButtonGroup(1, &Horizontal, "Groupbox with &normal buttons", this); + $box2->addWidget($bgrp4); + + # insert three pushbuttons... + Qt::PushButton("&Push Button", $bgrp4); + my $tb2 = Qt::PushButton("&Toggle Button", $bgrp4); + my $tb3 = Qt::PushButton("&Flat Button", $bgrp4); + + # ... and make the second one a toggle button + $tb2->setToggleButton(1); + $tb2->setOn(1); + + # ... and make the third one a flat button + $tb3->setFlat(1); +} + +# +# SLOT slotChangeGrp3State() +# +# enables/disables the radiobuttons of the third buttongroup +# + +sub slotChangeGrp3State { + rb21->setEnabled(state->isChecked); + rb22->setEnabled(state->isChecked); + rb23->setEnabled(state->isChecked); +} + +1; |