- Qt 5.5
- Qt Widgets
- Config Dialog Example
- pages.cpp Example File
- Qt 5.5.1 Reference Documentation

# pages.cpp Example File

dialogs/configdialog/pages.cpp

    /****************************************************************************
    **
    ** Copyright (C) 2015 The Qt Company Ltd.
    ** Contact: http://www.qt.io/licensing/
    **
    ** This file is part of the examples of the Qt Toolkit.
    **
    ** $QT_BEGIN_LICENSE:BSD$
    ** You may use this file under the terms of the BSD license as follows:
    **
    ** "Redistribution and use in source and binary forms, with or without
    ** modification, are permitted provided that the following conditions are
    ** met:
    **   * Redistributions of source code must retain the above copyright
    **     notice, this list of conditions and the following disclaimer.
    **   * Redistributions in binary form must reproduce the above copyright
    **     notice, this list of conditions and the following disclaimer in
    **     the documentation and/or other materials provided with the
    **     distribution.
    **   * Neither the name of The Qt Company Ltd nor the names of its
    **     contributors may be used to endorse or promote products derived
    **     from this software without specific prior written permission.
    **
    **
    ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
    **
    ** $QT_END_LICENSE$
    **
    ****************************************************************************/

    #include <QtWidgets>

    #include "pages.h"

    ConfigurationPage::ConfigurationPage(QWidget *parent)
        : QWidget(parent)
    {
        QGroupBox *configGroup = new QGroupBox(tr("Server configuration"));

        QLabel *serverLabel = new QLabel(tr("Server:"));
        QComboBox *serverCombo = new QComboBox;
        serverCombo->addItem(tr("Qt (Australia)"));
        serverCombo->addItem(tr("Qt (Germany)"));
        serverCombo->addItem(tr("Qt (Norway)"));
        serverCombo->addItem(tr("Qt (People's Republic of China)"));
        serverCombo->addItem(tr("Qt (USA)"));

        QHBoxLayout *serverLayout = new QHBoxLayout;
        serverLayout->addWidget(serverLabel);
        serverLayout->addWidget(serverCombo);

        QVBoxLayout *configLayout = new QVBoxLayout;
        configLayout->addLayout(serverLayout);
        configGroup->setLayout(configLayout);

        QVBoxLayout *mainLayout = new QVBoxLayout;
        mainLayout->addWidget(configGroup);
        mainLayout->addStretch(1);
        setLayout(mainLayout);
    }

    UpdatePage::UpdatePage(QWidget *parent)
        : QWidget(parent)
    {
        QGroupBox *updateGroup = new QGroupBox(tr("Package selection"));
        QCheckBox *systemCheckBox = new QCheckBox(tr("Update system"));
        QCheckBox *appsCheckBox = new QCheckBox(tr("Update applications"));
        QCheckBox *docsCheckBox = new QCheckBox(tr("Update documentation"));

        QGroupBox *packageGroup = new QGroupBox(tr("Existing packages"));

        QListWidget *packageList = new QListWidget;
        QListWidgetItem *qtItem = new QListWidgetItem(packageList);
        qtItem->setText(tr("Qt"));
        QListWidgetItem *qsaItem = new QListWidgetItem(packageList);
        qsaItem->setText(tr("QSA"));
        QListWidgetItem *teamBuilderItem = new QListWidgetItem(packageList);
        teamBuilderItem->setText(tr("Teambuilder"));

        QPushButton *startUpdateButton = new QPushButton(tr("Start update"));

        QVBoxLayout *updateLayout = new QVBoxLayout;
        updateLayout->addWidget(systemCheckBox);
        updateLayout->addWidget(appsCheckBox);
        updateLayout->addWidget(docsCheckBox);
        updateGroup->setLayout(updateLayout);

        QVBoxLayout *packageLayout = new QVBoxLayout;
        packageLayout->addWidget(packageList);
        packageGroup->setLayout(packageLayout);

        QVBoxLayout *mainLayout = new QVBoxLayout;
        mainLayout->addWidget(updateGroup);
        mainLayout->addWidget(packageGroup);
        mainLayout->addSpacing(12);
        mainLayout->addWidget(startUpdateButton);
        mainLayout->addStretch(1);
        setLayout(mainLayout);
    }

    QueryPage::QueryPage(QWidget *parent)
        : QWidget(parent)
    {
        QGroupBox *packagesGroup = new QGroupBox(tr("Look for packages"));

        QLabel *nameLabel = new QLabel(tr("Name:"));
        QLineEdit *nameEdit = new QLineEdit;

        QLabel *dateLabel = new QLabel(tr("Released after:"));
        QDateTimeEdit *dateEdit = new QDateTimeEdit(QDate::currentDate());

        QCheckBox *releasesCheckBox = new QCheckBox(tr("Releases"));
        QCheckBox *upgradesCheckBox = new QCheckBox(tr("Upgrades"));

        QSpinBox *hitsSpinBox = new QSpinBox;
        hitsSpinBox->setPrefix(tr("Return up to "));
        hitsSpinBox->setSuffix(tr(" results"));
        hitsSpinBox->setSpecialValueText(tr("Return only the first result"));
        hitsSpinBox->setMinimum(1);
        hitsSpinBox->setMaximum(100);
        hitsSpinBox->setSingleStep(10);

        QPushButton *startQueryButton = new QPushButton(tr("Start query"));

        QGridLayout *packagesLayout = new QGridLayout;
        packagesLayout->addWidget(nameLabel, 0, 0);
        packagesLayout->addWidget(nameEdit, 0, 1);
        packagesLayout->addWidget(dateLabel, 1, 0);
        packagesLayout->addWidget(dateEdit, 1, 1);
        packagesLayout->addWidget(releasesCheckBox, 2, 0);
        packagesLayout->addWidget(upgradesCheckBox, 3, 0);
        packagesLayout->addWidget(hitsSpinBox, 4, 0, 1, 2);
        packagesGroup->setLayout(packagesLayout);

        QVBoxLayout *mainLayout = new QVBoxLayout;
        mainLayout->addWidget(packagesGroup);
        mainLayout->addSpacing(12);
        mainLayout->addWidget(startQueryButton);
        mainLayout->addStretch(1);
        setLayout(mainLayout);
    }