#!/usr/bin/perl -w

use Qt;
use QColor;
use QFrame;
use QGroupBox;
use QLabel;
use QLayout;
use QPushButton;

$f = new QGroupBox;
$f->setFrameStyle($Frame{Panel} | $Frame{Plain});

$gm = new QBoxLayout($f, $Direction{TopToBottom}, 5);

$b1 = new QBoxLayout($Direction{LeftToRight});
$gm->addLayout($b1);

for my $i (0..3) {
    my $lab = new QLabel($f)->setImmortal;
    $lab->setText('Testing');
    $lab->adjustSize();
    $lab->setMinimumSize($lab->size());
    $lab->setFrameStyle($Frame{Panel} | $Frame{Plain});
    $lab->setAlignment($Align{Top} | $Align{HCenter});
    $lab->setBackgroundColor($yellow);
    $lab->setMaximumSize(150, 200);

    $b1->addWidget($lab, 20);
}

$qb = new QPushButton('Quit', $f);
$qApp->connect($qb, 'clicked()', 'quit()');
$qb->setFixedSize($qb->size());
$b1->addWidget($qb, 0, $Align{Top});

$large = new QLabel($f);
$large->setText("This is supposed to be a large window\n you know.");
$large->adjustSize();
$large->setMinimumSize($large->size());
$large->setFrameStyle($Frame{Panel} | $Frame{Plain});
$large->setAlignment($Align{Center});
$large->setBackgroundColor($white);

$b2 = new QBoxLayout($Direction{LeftToRight});
$gm->addLayout($b2, 50);

$b2->addWidget($large, 100);

{
    my $s = new QLabel($f)->setImmortal;
    $s->setMaximumSize(150, 150);
    $s->setText("This\n is\n supposed\n to be\n centered\n relatively.");
    $s->adjustSize();
    $s->setMinimumSize($s->size());
    $s->setFrameStyle($Frame{Panel} | $Frame{Plain});
    $s->setAlignment($Align{Center});
    $s->setBackgroundColor($cyan);
    $b2->addWidget($s, 10, $Align{Center});
}

{
    my $s = new QLabel($f)->setImmortal;
    $s->setMaximumSize($QLayout::unlimited, 50);
    $s->setText('This is a widget inside the outermost box');
    $s->adjustSize();
    $s->setMinimumSize($s->width(), $s->height());
    $s->setFrameStyle($Frame{Panel} | $Frame{Plain});
    $s->setAlignment($Align{Center});
    $s->setBackgroundColor($red);
    $gm->addWidget($s, 1);
}

$gm->activate();
$f->show();

$qApp->setMainWidget($f);
$qApp->exec();
