Mega Code Archive

 
Categories / C++ / Qt
 

Spin box

/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial Usage ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Commercial License Agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file.  Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights.  These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.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 the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef WINDOW_H #define WINDOW_H #include <QWidget> QT_BEGIN_NAMESPACE class QDateTimeEdit; class QDoubleSpinBox; class QGroupBox; class QLabel; QT_END_NAMESPACE class Window : public QWidget {     Q_OBJECT public:     Window(); public slots:     void changePrecision(int decimals);     void setFormatString(const QString &formatString); private:     void createSpinBoxes();     void createDateTimeEdits();     void createDoubleSpinBoxes();     QDateTimeEdit *meetingEdit;     QDoubleSpinBox *doubleSpinBox;     QDoubleSpinBox *priceSpinBox;     QDoubleSpinBox *scaleSpinBox;     QGroupBox *spinBoxesGroup;     QGroupBox *editsGroup;     QGroupBox *doubleSpinBoxesGroup;     QLabel *meetingLabel; }; #endif #include <QtGui> #include "window.h" Window::Window() {     createSpinBoxes();     createDateTimeEdits();     createDoubleSpinBoxes();     QHBoxLayout *layout = new QHBoxLayout;     layout->addWidget(spinBoxesGroup);     layout->addWidget(editsGroup);     layout->addWidget(doubleSpinBoxesGroup);     setLayout(layout);     setWindowTitle(tr("Spin Boxes")); } void Window::createSpinBoxes() {     spinBoxesGroup = new QGroupBox(tr("Spinboxes"));     QLabel *integerLabel = new QLabel(tr("Enter a value between "         "%1 and %2:").arg(-20).arg(20));     QSpinBox *integerSpinBox = new QSpinBox;     integerSpinBox->setRange(-20, 20);     integerSpinBox->setSingleStep(1);     integerSpinBox->setValue(0);     QLabel *zoomLabel = new QLabel(tr("Enter a zoom value between "         "%1 and %2:").arg(0).arg(1000));     QSpinBox *zoomSpinBox = new QSpinBox;     zoomSpinBox->setRange(0, 1000);     zoomSpinBox->setSingleStep(10);     zoomSpinBox->setSuffix("%");     zoomSpinBox->setSpecialValueText(tr("Automatic"));     zoomSpinBox->setValue(100);       QLabel *priceLabel = new QLabel(tr("Enter a price between "         "%1 and %2:").arg(0).arg(999));     QSpinBox *priceSpinBox = new QSpinBox;     priceSpinBox->setRange(0, 999);     priceSpinBox->setSingleStep(1);     priceSpinBox->setPrefix("$");     priceSpinBox->setValue(99);       QVBoxLayout *spinBoxLayout = new QVBoxLayout;     spinBoxLayout->addWidget(integerLabel);     spinBoxLayout->addWidget(integerSpinBox);     spinBoxLayout->addWidget(zoomLabel);     spinBoxLayout->addWidget(zoomSpinBox);     spinBoxLayout->addWidget(priceLabel);     spinBoxLayout->addWidget(priceSpinBox);     spinBoxesGroup->setLayout(spinBoxLayout); } void Window::createDateTimeEdits() {     editsGroup = new QGroupBox(tr("Date and time spin boxes"));     QLabel *dateLabel = new QLabel;     QDateEdit *dateEdit = new QDateEdit(QDate::currentDate());     dateEdit->setDateRange(QDate(2005, 1, 1), QDate(2010, 12, 31));     dateLabel->setText(tr("Appointment date (between %0 and %1):")                        .arg(dateEdit->minimumDate().toString(Qt::ISODate))                        .arg(dateEdit->maximumDate().toString(Qt::ISODate)));     QLabel *timeLabel = new QLabel;     QTimeEdit *timeEdit = new QTimeEdit(QTime::currentTime());     timeEdit->setTimeRange(QTime(9, 0, 0, 0), QTime(16, 30, 0, 0));     timeLabel->setText(tr("Appointment time (between %0 and %1):")                        .arg(timeEdit->minimumTime().toString(Qt::ISODate))                        .arg(timeEdit->maximumTime().toString(Qt::ISODate)));     meetingLabel = new QLabel;     meetingEdit = new QDateTimeEdit(QDateTime::currentDateTime());     QLabel *formatLabel = new QLabel(tr("Format string for the meeting date "                                         "and time:"));     QComboBox *formatComboBox = new QComboBox;     formatComboBox->addItem("yyyy-MM-dd hh:mm:ss (zzz 'ms')");     formatComboBox->addItem("hh:mm:ss MM/dd/yyyy");     formatComboBox->addItem("hh:mm:ss dd/MM/yyyy");     formatComboBox->addItem("hh:mm:ss");     formatComboBox->addItem("hh:mm ap");       connect(formatComboBox, SIGNAL(activated(const QString &)),             this, SLOT(setFormatString(const QString &)));     setFormatString(formatComboBox->currentText());     QVBoxLayout *editsLayout = new QVBoxLayout;     editsLayout->addWidget(dateLabel);     editsLayout->addWidget(dateEdit);     editsLayout->addWidget(timeLabel);     editsLayout->addWidget(timeEdit);     editsLayout->addWidget(meetingLabel);     editsLayout->addWidget(meetingEdit);     editsLayout->addWidget(formatLabel);     editsLayout->addWidget(formatComboBox);     editsGroup->setLayout(editsLayout); } void Window::setFormatString(const QString &formatString) {     meetingEdit->setDisplayFormat(formatString);       if (meetingEdit->displayedSections() & QDateTimeEdit::DateSections_Mask) {         meetingEdit->setDateRange(QDate(2004, 11, 1), QDate(2005, 11, 30));         meetingLabel->setText(tr("Meeting date (between %0 and %1):")             .arg(meetingEdit->minimumDate().toString(Qt::ISODate))       .arg(meetingEdit->maximumDate().toString(Qt::ISODate)));     } else {         meetingEdit->setTimeRange(QTime(0, 7, 20, 0), QTime(21, 0, 0, 0));         meetingLabel->setText(tr("Meeting time (between %0 and %1):")             .arg(meetingEdit->minimumTime().toString(Qt::ISODate))       .arg(meetingEdit->maximumTime().toString(Qt::ISODate)));     } } void Window::createDoubleSpinBoxes() {     doubleSpinBoxesGroup = new QGroupBox(tr("Double precision spinboxes"));     QLabel *precisionLabel = new QLabel(tr("Number of decimal places "                                            "to show:"));     QSpinBox *precisionSpinBox = new QSpinBox;     precisionSpinBox->setRange(0, 100);     precisionSpinBox->setValue(2);     QLabel *doubleLabel = new QLabel(tr("Enter a value between "         "%1 and %2:").arg(-20).arg(20));     doubleSpinBox = new QDoubleSpinBox;     doubleSpinBox->setRange(-20.0, 20.0);     doubleSpinBox->setSingleStep(1.0);     doubleSpinBox->setValue(0.0);     QLabel *scaleLabel = new QLabel(tr("Enter a scale factor between "         "%1 and %2:").arg(0).arg(1000.0));     scaleSpinBox = new QDoubleSpinBox;     scaleSpinBox->setRange(0.0, 1000.0);     scaleSpinBox->setSingleStep(10.0);     scaleSpinBox->setSuffix("%");     scaleSpinBox->setSpecialValueText(tr("No scaling"));     scaleSpinBox->setValue(100.0);     QLabel *priceLabel = new QLabel(tr("Enter a price between "         "%1 and %2:").arg(0).arg(1000));     priceSpinBox = new QDoubleSpinBox;     priceSpinBox->setRange(0.0, 1000.0);     priceSpinBox->setSingleStep(1.0);     priceSpinBox->setPrefix("$");     priceSpinBox->setValue(99.99);     connect(precisionSpinBox, SIGNAL(valueChanged(int)),             this, SLOT(changePrecision(int)));     QVBoxLayout *spinBoxLayout = new QVBoxLayout;     spinBoxLayout->addWidget(precisionLabel);     spinBoxLayout->addWidget(precisionSpinBox);     spinBoxLayout->addWidget(doubleLabel);     spinBoxLayout->addWidget(doubleSpinBox);     spinBoxLayout->addWidget(scaleLabel);     spinBoxLayout->addWidget(scaleSpinBox);     spinBoxLayout->addWidget(priceLabel);     spinBoxLayout->addWidget(priceSpinBox);     doubleSpinBoxesGroup->setLayout(spinBoxLayout); } void Window::changePrecision(int decimals) {     doubleSpinBox->setDecimals(decimals);     scaleSpinBox->setDecimals(decimals);     priceSpinBox->setDecimals(decimals); } #include <QApplication> #include "window.h" int main(int argc, char *argv[]) {     QApplication app(argc, argv);     Window window;     window.show();     return app.exec(); }