Qt 4.0: configdialog.cpp Example File (dialogs/configdialog/configdialog.cpp)

|  | Home · All Classes · Main Classes · Grouped Classes · Modules · Functions |

# configdialog.cpp Example File
dialogs/configdialog/configdialog.cpp

        /****************************************************************************
        **
        ** Copyright (C) 2005-2005 Trolltech AS. All rights reserved.
        **
        ** This file is part of the documentation of the Qt Toolkit.
        **
        ** 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.
        **
        ****************************************************************************/

        #include <QtGui>

        #include "configdialog.h"
        #include "pages.h"

        ConfigDialog::ConfigDialog()
        {
            contentsWidget = new QListWidget;
            contentsWidget->setViewMode(QListView::IconMode);
            contentsWidget->setIconSize(QSize(96, 84));
            contentsWidget->setMovement(QListView::Static);
            contentsWidget->setMaximumWidth(128);
            contentsWidget->setSpacing(12);

            pagesWidget = new QStackedWidget;
            pagesWidget->addWidget(new ConfigurationPage);
            pagesWidget->addWidget(new UpdatePage);
            pagesWidget->addWidget(new QueryPage);

            QPushButton *closeButton = new QPushButton(tr("Close"));

            createIcons();
            contentsWidget->setCurrentRow(0);

            connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));

            QHBoxLayout *horizontalLayout = new QHBoxLayout;
            horizontalLayout->addWidget(contentsWidget);
            horizontalLayout->addWidget(pagesWidget, 1);

            QHBoxLayout *buttonsLayout = new QHBoxLayout;
            buttonsLayout->addStretch(1);
            buttonsLayout->addWidget(closeButton);

            QVBoxLayout *mainLayout = new QVBoxLayout;
            mainLayout->addLayout(horizontalLayout);
            mainLayout->addStretch(1);
            mainLayout->addSpacing(12);
            mainLayout->addLayout(buttonsLayout);
            setLayout(mainLayout);

            setWindowTitle(tr("Config Dialog"));
        }

        void ConfigDialog::createIcons()
        {
            QListWidgetItem *configButton = new QListWidgetItem(contentsWidget);
            configButton->setIcon(QIcon(":/images/config.png"));
            configButton->setText(tr("Configuration"));
            configButton->setTextAlignment(Qt::AlignHCenter);
            configButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

            QListWidgetItem *updateButton = new QListWidgetItem(contentsWidget);
            updateButton->setIcon(QIcon(":/images/update.png"));
            updateButton->setText(tr("Update"));
            updateButton->setTextAlignment(Qt::AlignHCenter);
            updateButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

            QListWidgetItem *queryButton = new QListWidgetItem(contentsWidget);
            queryButton->setIcon(QIcon(":/images/query.png"));
            queryButton->setText(tr("Query"));
            queryButton->setTextAlignment(Qt::AlignHCenter);
            queryButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

            connect(contentsWidget,
                    SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
                    this, SLOT(changePage(QListWidgetItem *, QListWidgetItem*)));
        }

        void ConfigDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous)
        {
            if (!current)
                current = previous;

            pagesWidget->setCurrentIndex(contentsWidget->row(current));
        }