You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
3.3 KiB
Perl
128 lines
3.3 KiB
Perl
13 years ago
|
|
||
|
BEGIN { print "1..1\n" }
|
||
|
|
||
|
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;
|
||
|
|
||
|
package main;
|
||
|
|
||
|
use Qt;
|
||
|
use ButtonsGroups;
|
||
|
|
||
|
Qt::StyleFactory::keys(); # disable style plugins (hacky)
|
||
|
|
||
|
my $a = Qt::Application(\@ARGV);
|
||
|
|
||
|
my $buttonsgroups = ButtonsGroups;
|
||
|
$buttonsgroups->resize(500, 250);
|
||
|
$buttonsgroups->setCaption("PerlQt Test - Please wait");
|
||
|
$a->setMainWidget($buttonsgroups);
|
||
|
$buttonsgroups->show;
|
||
|
|
||
|
Qt::Timer::singleShot( 2000, Qt::app(), SLOT "quit()" );
|
||
|
my $r = $a->exec;
|
||
|
print +$r?"not ok\n" : "ok 1\n";
|
||
|
exit $r;
|