diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2009-03-23 09:18:55 (GMT) |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2009-03-23 09:18:55 (GMT) |
commit | e5fcad302d86d316390c6b0f62759a067313e8a9 (patch) | |
tree | c2afbf6f1066b6ce261f14341cf6d310e5595bc1 /examples/dialogs/standarddialogs | |
download | Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.zip Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.gz Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.bz2 |
Long live Qt 4.5!
Diffstat (limited to 'examples/dialogs/standarddialogs')
-rw-r--r-- | examples/dialogs/standarddialogs/dialog.cpp | 390 | ||||
-rw-r--r-- | examples/dialogs/standarddialogs/dialog.h | 99 | ||||
-rw-r--r-- | examples/dialogs/standarddialogs/main.cpp | 61 | ||||
-rw-r--r-- | examples/dialogs/standarddialogs/standarddialogs.pro | 11 |
4 files changed, 561 insertions, 0 deletions
diff --git a/examples/dialogs/standarddialogs/dialog.cpp b/examples/dialogs/standarddialogs/dialog.cpp new file mode 100644 index 0000000..0fe1f7e --- /dev/null +++ b/examples/dialogs/standarddialogs/dialog.cpp @@ -0,0 +1,390 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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.0, 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 are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui> + +#include "dialog.h" + +#define MESSAGE \ + Dialog::tr("<p>Message boxes have a caption, a text, " \ + "and any number of buttons, each with standard or custom texts." \ + "<p>Click a button to close the message box. Pressing the Esc button " \ + "will activate the detected escape button (if any).") + +Dialog::Dialog(QWidget *parent) + : QDialog(parent) +{ + errorMessageDialog = new QErrorMessage(this); + + int frameStyle = QFrame::Sunken | QFrame::Panel; + + integerLabel = new QLabel; + integerLabel->setFrameStyle(frameStyle); + QPushButton *integerButton = + new QPushButton(tr("QInputDialog::get&Integer()")); + + doubleLabel = new QLabel; + doubleLabel->setFrameStyle(frameStyle); + QPushButton *doubleButton = + new QPushButton(tr("QInputDialog::get&Double()")); + + itemLabel = new QLabel; + itemLabel->setFrameStyle(frameStyle); + QPushButton *itemButton = new QPushButton(tr("QInputDialog::getIte&m()")); + + textLabel = new QLabel; + textLabel->setFrameStyle(frameStyle); + QPushButton *textButton = new QPushButton(tr("QInputDialog::get&Text()")); + + colorLabel = new QLabel; + colorLabel->setFrameStyle(frameStyle); + QPushButton *colorButton = new QPushButton(tr("QColorDialog::get&Color()")); + + fontLabel = new QLabel; + fontLabel->setFrameStyle(frameStyle); + QPushButton *fontButton = new QPushButton(tr("QFontDialog::get&Font()")); + + directoryLabel = new QLabel; + directoryLabel->setFrameStyle(frameStyle); + QPushButton *directoryButton = + new QPushButton(tr("QFileDialog::getE&xistingDirectory()")); + + openFileNameLabel = new QLabel; + openFileNameLabel->setFrameStyle(frameStyle); + QPushButton *openFileNameButton = + new QPushButton(tr("QFileDialog::get&OpenFileName()")); + + openFileNamesLabel = new QLabel; + openFileNamesLabel->setFrameStyle(frameStyle); + QPushButton *openFileNamesButton = + new QPushButton(tr("QFileDialog::&getOpenFileNames()")); + + saveFileNameLabel = new QLabel; + saveFileNameLabel->setFrameStyle(frameStyle); + QPushButton *saveFileNameButton = + new QPushButton(tr("QFileDialog::get&SaveFileName()")); + + criticalLabel = new QLabel; + criticalLabel->setFrameStyle(frameStyle); + QPushButton *criticalButton = + new QPushButton(tr("QMessageBox::critica&l()")); + + informationLabel = new QLabel; + informationLabel->setFrameStyle(frameStyle); + QPushButton *informationButton = + new QPushButton(tr("QMessageBox::i&nformation()")); + + questionLabel = new QLabel; + questionLabel->setFrameStyle(frameStyle); + QPushButton *questionButton = + new QPushButton(tr("QMessageBox::&question()")); + + warningLabel = new QLabel; + warningLabel->setFrameStyle(frameStyle); + QPushButton *warningButton = new QPushButton(tr("QMessageBox::&warning()")); + + errorLabel = new QLabel; + errorLabel->setFrameStyle(frameStyle); + QPushButton *errorButton = + new QPushButton(tr("QErrorMessage::show&M&essage()")); + + connect(integerButton, SIGNAL(clicked()), this, SLOT(setInteger())); + connect(doubleButton, SIGNAL(clicked()), this, SLOT(setDouble())); + connect(itemButton, SIGNAL(clicked()), this, SLOT(setItem())); + connect(textButton, SIGNAL(clicked()), this, SLOT(setText())); + connect(colorButton, SIGNAL(clicked()), this, SLOT(setColor())); + connect(fontButton, SIGNAL(clicked()), this, SLOT(setFont())); + connect(directoryButton, SIGNAL(clicked()), + this, SLOT(setExistingDirectory())); + connect(openFileNameButton, SIGNAL(clicked()), + this, SLOT(setOpenFileName())); + connect(openFileNamesButton, SIGNAL(clicked()), + this, SLOT(setOpenFileNames())); + connect(saveFileNameButton, SIGNAL(clicked()), + this, SLOT(setSaveFileName())); + connect(criticalButton, SIGNAL(clicked()), this, SLOT(criticalMessage())); + connect(informationButton, SIGNAL(clicked()), + this, SLOT(informationMessage())); + connect(questionButton, SIGNAL(clicked()), this, SLOT(questionMessage())); + connect(warningButton, SIGNAL(clicked()), this, SLOT(warningMessage())); + connect(errorButton, SIGNAL(clicked()), this, SLOT(errorMessage())); + + native = new QCheckBox(this); + native->setText("Use native file dialog."); + native->setChecked(true); +#ifndef Q_WS_WIN +#ifndef Q_OS_MAC + native->hide(); +#endif +#endif + QGridLayout *layout = new QGridLayout; + layout->setColumnStretch(1, 1); + layout->setColumnMinimumWidth(1, 250); + layout->addWidget(integerButton, 0, 0); + layout->addWidget(integerLabel, 0, 1); + layout->addWidget(doubleButton, 1, 0); + layout->addWidget(doubleLabel, 1, 1); + layout->addWidget(itemButton, 2, 0); + layout->addWidget(itemLabel, 2, 1); + layout->addWidget(textButton, 3, 0); + layout->addWidget(textLabel, 3, 1); + layout->addWidget(colorButton, 4, 0); + layout->addWidget(colorLabel, 4, 1); + layout->addWidget(fontButton, 5, 0); + layout->addWidget(fontLabel, 5, 1); + layout->addWidget(directoryButton, 6, 0); + layout->addWidget(directoryLabel, 6, 1); + layout->addWidget(openFileNameButton, 7, 0); + layout->addWidget(openFileNameLabel, 7, 1); + layout->addWidget(openFileNamesButton, 8, 0); + layout->addWidget(openFileNamesLabel, 8, 1); + layout->addWidget(saveFileNameButton, 9, 0); + layout->addWidget(saveFileNameLabel, 9, 1); + layout->addWidget(criticalButton, 10, 0); + layout->addWidget(criticalLabel, 10, 1); + layout->addWidget(informationButton, 11, 0); + layout->addWidget(informationLabel, 11, 1); + layout->addWidget(questionButton, 12, 0); + layout->addWidget(questionLabel, 12, 1); + layout->addWidget(warningButton, 13, 0); + layout->addWidget(warningLabel, 13, 1); + layout->addWidget(errorButton, 14, 0); + layout->addWidget(errorLabel, 14, 1); + layout->addWidget(native, 15, 0); + setLayout(layout); + + setWindowTitle(tr("Standard Dialogs")); +} + +void Dialog::setInteger() +{ +//! [0] + bool ok; + int i = QInputDialog::getInteger(this, tr("QInputDialog::getInteger()"), + tr("Percentage:"), 25, 0, 100, 1, &ok); + if (ok) + integerLabel->setText(tr("%1%").arg(i)); +//! [0] +} + +void Dialog::setDouble() +{ +//! [1] + bool ok; + double d = QInputDialog::getDouble(this, tr("QInputDialog::getDouble()"), + tr("Amount:"), 37.56, -10000, 10000, 2, &ok); + if (ok) + doubleLabel->setText(QString("$%1").arg(d)); +//! [1] +} + +void Dialog::setItem() +{ +//! [2] + QStringList items; + items << tr("Spring") << tr("Summer") << tr("Fall") << tr("Winter"); + + bool ok; + QString item = QInputDialog::getItem(this, tr("QInputDialog::getItem()"), + tr("Season:"), items, 0, false, &ok); + if (ok && !item.isEmpty()) + itemLabel->setText(item); +//! [2] +} + +void Dialog::setText() +{ +//! [3] + bool ok; + QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"), + tr("User name:"), QLineEdit::Normal, + QDir::home().dirName(), &ok); + if (ok && !text.isEmpty()) + textLabel->setText(text); +//! [3] +} + +void Dialog::setColor() +{ + QColor color = QColorDialog::getColor(Qt::green, this); + if (color.isValid()) { + colorLabel->setText(color.name()); + colorLabel->setPalette(QPalette(color)); + colorLabel->setAutoFillBackground(true); + } +} + +void Dialog::setFont() +{ + bool ok; + QFont font = QFontDialog::getFont(&ok, QFont(fontLabel->text()), this); + if (ok) { + fontLabel->setText(font.key()); + fontLabel->setFont(font); + } +} + +void Dialog::setExistingDirectory() +{ + QFileDialog::Options options = QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly; + if (!native->isChecked()) + options |= QFileDialog::DontUseNativeDialog; + QString directory = QFileDialog::getExistingDirectory(this, + tr("QFileDialog::getExistingDirectory()"), + directoryLabel->text(), + options); + if (!directory.isEmpty()) + directoryLabel->setText(directory); +} + +void Dialog::setOpenFileName() +{ + QFileDialog::Options options; + if (!native->isChecked()) + options |= QFileDialog::DontUseNativeDialog; + QString selectedFilter; + QString fileName = QFileDialog::getOpenFileName(this, + tr("QFileDialog::getOpenFileName()"), + openFileNameLabel->text(), + tr("All Files (*);;Text Files (*.txt)"), + &selectedFilter, + options); + if (!fileName.isEmpty()) + openFileNameLabel->setText(fileName); +} + +void Dialog::setOpenFileNames() +{ + QFileDialog::Options options; + if (!native->isChecked()) + options |= QFileDialog::DontUseNativeDialog; + QString selectedFilter; + QStringList files = QFileDialog::getOpenFileNames( + this, tr("QFileDialog::getOpenFileNames()"), + openFilesPath, + tr("All Files (*);;Text Files (*.txt)"), + &selectedFilter, + options); + if (files.count()) { + openFilesPath = files[0]; + openFileNamesLabel->setText(QString("[%1]").arg(files.join(", "))); + } +} + +void Dialog::setSaveFileName() +{ + QFileDialog::Options options; + if (!native->isChecked()) + options |= QFileDialog::DontUseNativeDialog; + QString selectedFilter; + QString fileName = QFileDialog::getSaveFileName(this, + tr("QFileDialog::getSaveFileName()"), + saveFileNameLabel->text(), + tr("All Files (*);;Text Files (*.txt)"), + &selectedFilter, + options); + if (!fileName.isEmpty()) + saveFileNameLabel->setText(fileName); +} + +void Dialog::criticalMessage() +{ + QMessageBox::StandardButton reply; + reply = QMessageBox::critical(this, tr("QMessageBox::critical()"), + MESSAGE, + QMessageBox::Abort | QMessageBox::Retry | QMessageBox::Ignore); + if (reply == QMessageBox::Abort) + criticalLabel->setText(tr("Abort")); + else if (reply == QMessageBox::Retry) + criticalLabel->setText(tr("Retry")); + else + criticalLabel->setText(tr("Ignore")); +} + +void Dialog::informationMessage() +{ + QMessageBox::StandardButton reply; + reply = QMessageBox::information(this, tr("QMessageBox::information()"), MESSAGE); + if (reply == QMessageBox::Ok) + informationLabel->setText(tr("OK")); + else + informationLabel->setText(tr("Escape")); +} + +void Dialog::questionMessage() +{ + QMessageBox::StandardButton reply; + reply = QMessageBox::question(this, tr("QMessageBox::question()"), + MESSAGE, + QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); + if (reply == QMessageBox::Yes) + questionLabel->setText(tr("Yes")); + else if (reply == QMessageBox::No) + questionLabel->setText(tr("No")); + else + questionLabel->setText(tr("Cancel")); +} + +void Dialog::warningMessage() +{ + QMessageBox msgBox(QMessageBox::Warning, tr("QMessageBox::warning()"), + MESSAGE, 0, this); + msgBox.addButton(tr("Save &Again"), QMessageBox::AcceptRole); + msgBox.addButton(tr("&Continue"), QMessageBox::RejectRole); + if (msgBox.exec() == QMessageBox::AcceptRole) + warningLabel->setText(tr("Save Again")); + else + warningLabel->setText(tr("Continue")); + +} + +void Dialog::errorMessage() +{ + errorMessageDialog->showMessage( + tr("This dialog shows and remembers error messages. " + "If the checkbox is checked (as it is by default), " + "the shown message will be shown again, " + "but if the user unchecks the box the message " + "will not appear again if QErrorMessage::showMessage() " + "is called with the same message.")); + errorLabel->setText(tr("If the box is unchecked, the message " + "won't appear again.")); +} diff --git a/examples/dialogs/standarddialogs/dialog.h b/examples/dialogs/standarddialogs/dialog.h new file mode 100644 index 0000000..35f0b05 --- /dev/null +++ b/examples/dialogs/standarddialogs/dialog.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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.0, 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 are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef DIALOG_H +#define DIALOG_H + +#include <QDialog> + +QT_BEGIN_NAMESPACE +class QCheckBox; +class QLabel; +class QErrorMessage; +QT_END_NAMESPACE + +class Dialog : public QDialog +{ + Q_OBJECT + +public: + Dialog(QWidget *parent = 0); + +private slots: + void setInteger(); + void setDouble(); + void setItem(); + void setText(); + void setColor(); + void setFont(); + void setExistingDirectory(); + void setOpenFileName(); + void setOpenFileNames(); + void setSaveFileName(); + void criticalMessage(); + void informationMessage(); + void questionMessage(); + void warningMessage(); + void errorMessage(); + +private: + QCheckBox *native; + QLabel *integerLabel; + QLabel *doubleLabel; + QLabel *itemLabel; + QLabel *textLabel; + QLabel *colorLabel; + QLabel *fontLabel; + QLabel *directoryLabel; + QLabel *openFileNameLabel; + QLabel *openFileNamesLabel; + QLabel *saveFileNameLabel; + QLabel *criticalLabel; + QLabel *informationLabel; + QLabel *questionLabel; + QLabel *warningLabel; + QLabel *errorLabel; + QErrorMessage *errorMessageDialog; + + QString openFilesPath; +}; + +#endif diff --git a/examples/dialogs/standarddialogs/main.cpp b/examples/dialogs/standarddialogs/main.cpp new file mode 100644 index 0000000..3b7ed8b --- /dev/null +++ b/examples/dialogs/standarddialogs/main.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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.0, 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 are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QApplication> +#include <QTranslator> +#include <QLocale> +#include <QLibraryInfo> + +#include "dialog.h" + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + QString translatorFileName = QLatin1String("qt_"); + translatorFileName += QLocale::system().name(); + QTranslator *translator = new QTranslator(&app); + if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) + app.installTranslator(translator); + + Dialog dialog; + return dialog.exec(); +} diff --git a/examples/dialogs/standarddialogs/standarddialogs.pro b/examples/dialogs/standarddialogs/standarddialogs.pro new file mode 100644 index 0000000..6bfa6bf --- /dev/null +++ b/examples/dialogs/standarddialogs/standarddialogs.pro @@ -0,0 +1,11 @@ +HEADERS = dialog.h +SOURCES = dialog.cpp \ + main.cpp + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/dialogs/standarddialogs +sources.files = $$SOURCES $$HEADERS *.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/dialogs/standarddialogs +INSTALLS += target sources +wince50standard-x86-msvc2005: LIBS += libcmt.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib ws2.lib + |