Code for Sliders Example
/****************************************************************************
**
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
**
** This file is part of Qt Jambi.
**
** ** This file may be used under the terms of the GNU General Public
** License version 2.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of
** this file. Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
** http://www.trolltech.com/products/qt/opensource.html
**
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://www.trolltech.com/products/qt/licensing.html or contact the
** sales department at sales@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
package com.trolltech.examples;
import com.trolltech.qt.core.*;
import com.trolltech.qt.gui.*;
@QtJambiExample(name = "Sliders")
public class Sliders extends QWidget
{
private SlidersGroup horizontalSliders;
private SlidersGroup verticalSliders;
private QStackedWidget stackedWidget;
private QGroupBox controlsGroup;
private QLabel minimumLabel;
private QLabel maximumLabel;
private QLabel valueLabel;
private QCheckBox invertedAppearance;
private QCheckBox invertedKeyBindings;
private QSpinBox minimumSpinBox;
private QSpinBox maximumSpinBox;
private QSpinBox valueSpinBox;
private QComboBox orientationCombo;
public Sliders()
{
horizontalSliders = new SlidersGroup(Qt.Orientation.Horizontal, tr("Horizontal"));
verticalSliders = new SlidersGroup(Qt.Orientation.Vertical, tr("Vertical"));
stackedWidget = new QStackedWidget();
stackedWidget.addWidget(horizontalSliders);
stackedWidget.addWidget(verticalSliders);
createControls(tr("Controls"));
horizontalSliders.valueChanged.connect(verticalSliders, "setValue(int)");
verticalSliders.valueChanged.connect(valueSpinBox, "setValue(int)");
valueSpinBox.valueChanged.connect(horizontalSliders, "setValue(int)");
QHBoxLayout layout = new QHBoxLayout();
layout.addWidget(controlsGroup);
layout.addWidget(stackedWidget);
setLayout(layout);
minimumSpinBox.setValue(0);
maximumSpinBox.setValue(20);
valueSpinBox.setValue(5);
setWindowTitle(tr("Sliders"));
}
private void createControls(String title)
{
controlsGroup = new QGroupBox(title);
minimumLabel = new QLabel(tr("Minimum value:"));
maximumLabel = new QLabel(tr("Maximum value:"));
valueLabel = new QLabel(tr("Current value:"));
invertedAppearance = new QCheckBox(tr("Inverted appearance"));
invertedKeyBindings = new QCheckBox(tr("Inverted key bindings"));
minimumSpinBox = new QSpinBox();
minimumSpinBox.setRange(-100, 100);
minimumSpinBox.setSingleStep(1);
maximumSpinBox = new QSpinBox();
maximumSpinBox.setRange(-100, 100);
maximumSpinBox.setSingleStep(1);
valueSpinBox = new QSpinBox();
valueSpinBox.setRange(-100, 100);
valueSpinBox.setSingleStep(1);
orientationCombo = new QComboBox();
orientationCombo.addItem(tr("Horizontal slider-like widgets"));
orientationCombo.addItem(tr("Vertical slider-like widgets"));
orientationCombo.activatedIndex.connect(stackedWidget, "setCurrentIndex(int)");
minimumSpinBox.valueChanged.connect(horizontalSliders, "setMinimum(int)");
minimumSpinBox.valueChanged.connect(verticalSliders, "setMinimum(int)");
maximumSpinBox.valueChanged.connect(horizontalSliders, "setMaximum(int)");
maximumSpinBox.valueChanged.connect(verticalSliders, "setMaximum(int)");
invertedAppearance.toggled.connect(horizontalSliders, "invertAppearance(boolean)");
invertedAppearance.toggled.connect(verticalSliders, "invertAppearance(boolean)");
invertedKeyBindings.toggled.connect(horizontalSliders, "invertedKeyBindings(boolean)");
invertedKeyBindings.toggled.connect(verticalSliders, "invertedKeyBindings(boolean)");
QGridLayout controlsLayout = new QGridLayout();
controlsLayout.addWidget(minimumLabel, 0, 0);
controlsLayout.addWidget(maximumLabel, 1, 0);
controlsLayout.addWidget(valueLabel, 2, 0);
controlsLayout.addWidget(minimumSpinBox, 0, 1);
controlsLayout.addWidget(maximumSpinBox, 1, 1);
controlsLayout.addWidget(valueSpinBox, 2, 1);
controlsLayout.addWidget(invertedAppearance, 0, 2);
controlsLayout.addWidget(invertedKeyBindings, 1, 2);
controlsLayout.addWidget(orientationCombo, 3, 0, 1, 3);
controlsGroup.setLayout(controlsLayout);
}
public static void main(String args[])
{
QApplication.initialize(args);
new Sliders().show();
QApplication.exec();
}
}
class SlidersGroup extends QGroupBox
{
private QSlider slider;
private QScrollBar scrollBar;
private QDial dial;
public Signal1<Integer> valueChanged = new Signal1<Integer>();
public SlidersGroup(Qt.Orientation orientation, String title)
{
slider = new QSlider(orientation);
slider.setFocusPolicy(Qt.FocusPolicy.StrongFocus);
slider.setTickPosition(QSlider.TickPosition.TicksBothSides);
slider.setTickInterval(10);
slider.setSingleStep(1);
scrollBar = new QScrollBar(orientation);
scrollBar.setFocusPolicy(Qt.FocusPolicy.StrongFocus);
dial = new QDial();
dial.setFocusPolicy(Qt.FocusPolicy.StrongFocus);
slider.valueChanged.connect(scrollBar, "setValue(int)");
scrollBar.valueChanged.connect(dial, "setValue(int)");
dial.valueChanged.connect(slider, "setValue(int)");
dial.valueChanged.connect(valueChanged);
QBoxLayout.Direction direction;
if (orientation == Qt.Orientation.Horizontal)
direction = QBoxLayout.Direction.TopToBottom;
else
direction = QBoxLayout.Direction.LeftToRight;
QBoxLayout slidersLayout = new QBoxLayout(direction);
slidersLayout.addWidget(slider);
slidersLayout.addWidget(scrollBar);
slidersLayout.addWidget(dial);
setLayout(slidersLayout);
}
public void setValue(int value)
{
slider.setValue(value);
}
public void setMinimum(int value)
{
slider.setMinimum(value);
scrollBar.setMinimum(value);
dial.setMinimum(value);
}
public void setMaximum(int value)
{
slider.setMaximum(value);
scrollBar.setMaximum(value);
dial.setMaximum(value);
}
public void invertAppearance(boolean invert)
{
slider.setInvertedAppearance(invert);
scrollBar.setInvertedAppearance(invert);
dial.setInvertedAppearance(invert);
}
public void invertedKeyBindings(boolean invert)
{
slider.setInvertedControls(invert);
scrollBar.setInvertedControls(invert);
dial.setInvertedControls(invert);
}
}