diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 90825e2392b2d70e43c7a25b8a3752299a933894 (patch) | |
tree | e33aa27f02b74604afbfd0ea4f1cfca8833d882a /qtjava/javalib/examples/layout | |
download | tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'qtjava/javalib/examples/layout')
-rw-r--r-- | qtjava/javalib/examples/layout/ExampleWidget.java | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/qtjava/javalib/examples/layout/ExampleWidget.java b/qtjava/javalib/examples/layout/ExampleWidget.java new file mode 100644 index 00000000..77d96816 --- /dev/null +++ b/qtjava/javalib/examples/layout/ExampleWidget.java @@ -0,0 +1,152 @@ +/*************************************************************************** +* $Id$ +** +* Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +* This file is part of an example program for Qt. This example +* program may be used, distributed and modified without limitation. +** +****************************************************************************/ +import org.kde.qt.*; + + +class ExampleWidget extends QWidget +{ + +ExampleWidget( ) +{ + this(null, null); +} + +ExampleWidget( QWidget parent, String name ) +{ + super( parent, name ); + // Make the top-level layout; a vertical box to contain all widgets + // and sub-layouts. + QBoxLayout topLayout = new QVBoxLayout( this, 5 ); + + // Create a menubar... + QMenuBar menubar = new QMenuBar( this ); + menubar.setSeparator( QMenuBar.InWindowsStyle ); + QPopupMenu popup; + popup = new QPopupMenu( this ); + popup.insertItem( "&Quit", qApp(), SLOT("quit()") ); + menubar.insertItem( "&File", popup ); + + // ...and tell the layout about it. + topLayout.setMenuBar( menubar ); + + // Make an hbox that will hold a row of buttons. + QBoxLayout buttons = new QHBoxLayout( topLayout ); + int i; + for ( i = 1; i <= 4; i++ ) { + QPushButton but = new QPushButton( this ); + String s = "Button " + i; + but.setText( s ); + + // Set horizontal stretch factor to 10 to let the buttons + // stretch horizontally. The buttons will not stretch + // vertically, since bigWidget below will take up vertical + // stretch. + buttons.addWidget( but, 10 ); + // (Actually, the result would have been the same with a + // stretch factor of 0; if no items in a layout have non-zero + // stretch, the space is divided equally between members.) + } + + // Make another hbox that will hold a left-justified row of buttons. + QBoxLayout buttons2 = new QHBoxLayout( topLayout ); + + QPushButton but = new QPushButton( "Button five", this ); + buttons2.addWidget( but ); + + but = new QPushButton( "Button 6", this ); + buttons2.addWidget( but ); + + // Fill up the rest of the hbox with stretchable space, so that + // the buttons get their minimum width and are pushed to the left. + buttons2.addStretch( 10 ); + + // Make a big widget that will grab all space in the middle. + QMultiLineEdit bigWidget = new QMultiLineEdit( this ); + bigWidget.setText( "This widget will get all the remaining space" ); + bigWidget.setFrameStyle( QFrame.Panel | QFrame.Plain ); + + // Set vertical stretch factor to 10 to let the bigWidget stretch + // vertically. It will stretch horizontally because there are no + // widgets beside it to take up horizontal stretch. + // topLayout.addWidget( bigWidget, 10 ); + topLayout.addWidget( bigWidget ); + + // Make a grid that will hold a vertical table of QLabel/QLineEdit + // pairs next to a large QMultiLineEdit. + + // Don't use hard-coded row/column numbers in QGridLayout, you'll + // regret it when you have to change the layout. + int numRows = 3; + int labelCol = 0; + int linedCol = 1; + int multiCol = 2; + + // Let the grid-layout have a spacing of 10 pixels between + // widgets, overriding the default from topLayout. + QGridLayout grid = new QGridLayout( topLayout, 0, 0, 10 ); + int row; + + for ( row = 0; row < numRows; row++ ) { + QLineEdit ed = new QLineEdit( this ); + // The line edit goes in the second column + grid.addWidget( ed, row, linedCol ); + + // Make a label that is a buddy of the line edit + String s= "Line &" + (row+1); + QLabel label = new QLabel( ed, s, this ); + // The label goes in the first column. + grid.addWidget( label, row, labelCol ); + } + + // The multiline edit will cover the entire vertical range of the + // grid (rows 0 to numRows) and stay in column 2. + + QMultiLineEdit med = new QMultiLineEdit( this ); + grid.addMultiCellWidget( med, 0, -1, multiCol, multiCol ); + + // The labels will take the space they need. Let the remaining + // horizontal space be shared so that the multiline edit gets + // twice as much as the line edit. + grid.setColStretch( linedCol, 10 ); + grid.setColStretch( multiCol, 20 ); + + // Add a widget at the bottom. + QLabel sb = new QLabel( this ); + sb.setText( "Let's pretend this is a status bar" ); + sb.setFrameStyle( QFrame.Panel | QFrame.Sunken ); + // This widget will use all horizontal space, and have a fixed height. + + // we should have made a subclass and implemented sizePolicy there... + sb.setFixedHeight( sb.sizeHint().height() ); + + sb.setAlignment( AlignVCenter | AlignLeft ); + topLayout.addWidget( sb ); + + topLayout.activate(); +} + + +public static void main( String[] args ) +{ + QApplication a = new QApplication( args ); + + ExampleWidget f = new ExampleWidget(); + a.setMainWidget(f); + f.setCaption("Qt Example - Caption"); + f.show(); + + a.exec(); + return; +} + +static { + qtjava.initialize(); +} +} |