package GLObjectWindow; use strict; use TQt; use TQt::isa qw(TQt::Widget); use TQt::attributes qw( file frame menu box xpos ypos zpos ); use GLBox; sub NEW { shift->SUPER::NEW(@_); # Create a menu file = TQt::PopupMenu( this ); file->insertItem( "Exit", TQt::app(), TQ_SLOT 'quit()', TQt::KeySequence(int &CTRL + &Key_Q )); # Create a menu bar menu = TQt::MenuBar( this ); menu->setSeparator( &TQt::MenuBar::InWindowsStyle ); menu->insertItem("&File", file ); # Create a nice frame to put around the OpenGL widget frame = TQt::Frame( this, "frame" ); frame->setFrameStyle( &TQt::Frame::Sunken | &TQt::Frame::Panel ); frame->setLineWidth( 2 ); # Create our OpenGL widget box = GLBox( frame, "glbox"); # Create the three sliders; one for each rotation axis xpos = TQt::Slider ( 0, 360, 60, 0, &TQt::Slider::Vertical, this, "xsl" ); xpos->setTickmarks( &TQt::Slider::Left ); TQt::Object::connect( xpos, TQ_SIGNAL 'valueChanged(int)', box, TQ_SLOT 'setXRotation(int)' ); ypos = TQt::Slider ( 0, 360, 60, 0, &TQt::Slider::Vertical, this, "ysl" ); ypos->setTickmarks( &TQt::Slider::Left ); TQt::Object::connect( ypos, TQ_SIGNAL 'valueChanged(int)', box, TQ_SLOT 'setYRotation(int)' ); zpos = TQt::Slider ( 0, 360, 60, 0, &TQt::Slider::Vertical, this, "zsl" ); zpos->setTickmarks( &TQt::Slider::Left ); TQt::Object::connect( zpos, TQ_SIGNAL 'valueChanged(int)', box, TQ_SLOT 'setZRotation(int)' ); # Now that we have all the widgets, put them into a nice layout # Put the sliders on top of each other my $vlayout = TQt::VBoxLayout( 20, "vlayout"); $vlayout->addWidget( xpos ); $vlayout->addWidget( ypos ); $vlayout->addWidget( zpos ); # Put the GL widget inside the frame my $flayout = TQt::HBoxLayout( frame, 2, 2, "flayout"); $flayout->addWidget( box, 1 ); # Top level layout, puts the sliders to the left of the frame/GL widget my $hlayout = TQt::HBoxLayout( this, 20, 20, "hlayout"); $hlayout->setMenuBar( menu ); $hlayout->addLayout( $vlayout ); $hlayout->addWidget( frame, 1 ); } 1; package main; use TQt; use GLObjectWindow; my $a = TQt::Application(\@ARGV); my $w = GLObjectWindow; $w->resize(350,350); $w->show; $a->setMainWidget( $w); exit $a->exec;