diff options
Diffstat (limited to 'examples/chart/optionsform.cpp')
-rw-r--r-- | examples/chart/optionsform.cpp | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/examples/chart/optionsform.cpp b/examples/chart/optionsform.cpp new file mode 100644 index 0000000..5228bc3 --- /dev/null +++ b/examples/chart/optionsform.cpp @@ -0,0 +1,135 @@ +#include "optionsform.h" + +#include <qbuttongroup.h> +#include <qcombobox.h> +#include <qfontdialog.h> +#include <qframe.h> +#include <qimage.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qpushbutton.h> +#include <qradiobutton.h> +#include <qspinbox.h> + +#include "images/options_horizontalbarchart.xpm" +#include "images/options_piechart.xpm" +#include "images/options_verticalbarchart.xpm" + + +OptionsForm::OptionsForm( QWidget* parent, const char* name, + bool modal, WFlags f ) + : QDialog( parent, name, modal, f ) +{ + setCaption( "Chart -- Options" ); + resize( 320, 290 ); + + optionsFormLayout = new QVBoxLayout( this, 11, 6 ); + + chartTypeLayout = new QHBoxLayout( 0, 0, 6 ); + + chartTypeTextLabel = new QLabel( "&Chart Type", this ); + chartTypeLayout->addWidget( chartTypeTextLabel ); + + chartTypeComboBox = new QComboBox( FALSE, this ); + chartTypeComboBox->insertItem( QPixmap( options_piechart ), "Pie Chart" ); + chartTypeComboBox->insertItem( QPixmap( options_verticalbarchart ), + "Vertical Bar Chart" ); + chartTypeComboBox->insertItem( QPixmap( options_horizontalbarchart ), + "Horizontal Bar Chart" ); + chartTypeLayout->addWidget( chartTypeComboBox ); + optionsFormLayout->addLayout( chartTypeLayout ); + + fontLayout = new QHBoxLayout( 0, 0, 6 ); + + fontPushButton = new QPushButton( "&Font...", this ); + fontLayout->addWidget( fontPushButton ); + QSpacerItem* spacer = new QSpacerItem( 0, 0, + QSizePolicy::Expanding, + QSizePolicy::Minimum ); + fontLayout->addItem( spacer ); + + fontTextLabel = new QLabel( this ); // Must be set by caller via setFont() + fontLayout->addWidget( fontTextLabel ); + optionsFormLayout->addLayout( fontLayout ); + + addValuesFrame = new QFrame( this ); + addValuesFrame->setFrameShape( QFrame::StyledPanel ); + addValuesFrame->setFrameShadow( QFrame::Sunken ); + addValuesFrameLayout = new QVBoxLayout( addValuesFrame, 11, 6 ); + + addValuesButtonGroup = new QButtonGroup( "Show Values", addValuesFrame ); + addValuesButtonGroup->setColumnLayout(0, Qt::Vertical ); + addValuesButtonGroup->layout()->setSpacing( 6 ); + addValuesButtonGroup->layout()->setMargin( 11 ); + addValuesButtonGroupLayout = new QVBoxLayout( + addValuesButtonGroup->layout() ); + addValuesButtonGroupLayout->setAlignment( Qt::AlignTop ); + + noRadioButton = new QRadioButton( "&No", addValuesButtonGroup ); + noRadioButton->setChecked( TRUE ); + addValuesButtonGroupLayout->addWidget( noRadioButton ); + + yesRadioButton = new QRadioButton( "&Yes", addValuesButtonGroup ); + addValuesButtonGroupLayout->addWidget( yesRadioButton ); + + asPercentageRadioButton = new QRadioButton( "As &Percentage", + addValuesButtonGroup ); + addValuesButtonGroupLayout->addWidget( asPercentageRadioButton ); + addValuesFrameLayout->addWidget( addValuesButtonGroup ); + + decimalPlacesLayout = new QHBoxLayout( 0, 0, 6 ); + + decimalPlacesTextLabel = new QLabel( "&Decimal Places", addValuesFrame ); + decimalPlacesLayout->addWidget( decimalPlacesTextLabel ); + + decimalPlacesSpinBox = new QSpinBox( addValuesFrame ); + decimalPlacesSpinBox->setMinValue( 0 ); + decimalPlacesSpinBox->setMaxValue( 9 ); + decimalPlacesLayout->addWidget( decimalPlacesSpinBox ); + + addValuesFrameLayout->addLayout( decimalPlacesLayout ); + + optionsFormLayout->addWidget( addValuesFrame ); + + buttonsLayout = new QHBoxLayout( 0, 0, 6 ); + spacer = new QSpacerItem( 0, 0, + QSizePolicy::Expanding, QSizePolicy::Minimum ); + buttonsLayout->addItem( spacer ); + + okPushButton = new QPushButton( "OK", this ); + okPushButton->setDefault( TRUE ); + buttonsLayout->addWidget( okPushButton ); + + cancelPushButton = new QPushButton( "Cancel", this ); + buttonsLayout->addWidget( cancelPushButton ); + optionsFormLayout->addLayout( buttonsLayout ); + + connect( fontPushButton, SIGNAL( clicked() ), this, SLOT( chooseFont() ) ); + connect( okPushButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); + connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( reject() ) ); + + chartTypeTextLabel->setBuddy( chartTypeComboBox ); + decimalPlacesTextLabel->setBuddy( decimalPlacesSpinBox ); +} + + +void OptionsForm::chooseFont() +{ + bool ok; + QFont font = QFontDialog::getFont( &ok, m_font, this ); + if ( ok ) + setFont( font ); +} + + +void OptionsForm::setFont( QFont font ) +{ + QString label = font.family() + " " + + QString::number( font.pointSize() ) + "pt"; + if ( font.bold() ) + label += " Bold"; + if ( font.italic() ) + label += " Italic"; + fontTextLabel->setText( label ); + m_font = font; +} |