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/widgets/styles | |
download | Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.zip Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.gz Qt-e5fcad302d86d316390c6b0f62759a067313e8a9.tar.bz2 |
Long live Qt 4.5!
Diffstat (limited to 'examples/widgets/styles')
-rw-r--r-- | examples/widgets/styles/images/woodbackground.png | bin | 0 -> 7691 bytes | |||
-rw-r--r-- | examples/widgets/styles/images/woodbutton.png | bin | 0 -> 7689 bytes | |||
-rw-r--r-- | examples/widgets/styles/main.cpp | 54 | ||||
-rw-r--r-- | examples/widgets/styles/norwegianwoodstyle.cpp | 331 | ||||
-rw-r--r-- | examples/widgets/styles/norwegianwoodstyle.h | 79 | ||||
-rw-r--r-- | examples/widgets/styles/styles.pro | 14 | ||||
-rw-r--r-- | examples/widgets/styles/styles.qrc | 6 | ||||
-rw-r--r-- | examples/widgets/styles/widgetgallery.cpp | 276 | ||||
-rw-r--r-- | examples/widgets/styles/widgetgallery.h | 122 |
9 files changed, 882 insertions, 0 deletions
diff --git a/examples/widgets/styles/images/woodbackground.png b/examples/widgets/styles/images/woodbackground.png Binary files differnew file mode 100644 index 0000000..8be3366 --- /dev/null +++ b/examples/widgets/styles/images/woodbackground.png diff --git a/examples/widgets/styles/images/woodbutton.png b/examples/widgets/styles/images/woodbutton.png Binary files differnew file mode 100644 index 0000000..adb59ef --- /dev/null +++ b/examples/widgets/styles/images/woodbutton.png diff --git a/examples/widgets/styles/main.cpp b/examples/widgets/styles/main.cpp new file mode 100644 index 0000000..8998858 --- /dev/null +++ b/examples/widgets/styles/main.cpp @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** 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 "widgetgallery.h" + +int main(int argc, char *argv[]) +{ + Q_INIT_RESOURCE(styles); + + QApplication app(argc, argv); + WidgetGallery gallery; + gallery.show(); + return app.exec(); +} diff --git a/examples/widgets/styles/norwegianwoodstyle.cpp b/examples/widgets/styles/norwegianwoodstyle.cpp new file mode 100644 index 0000000..1be5db0 --- /dev/null +++ b/examples/widgets/styles/norwegianwoodstyle.cpp @@ -0,0 +1,331 @@ +/**************************************************************************** +** +** 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 "norwegianwoodstyle.h" + +//! [0] +void NorwegianWoodStyle::polish(QPalette &palette) +{ + QColor brown(212, 140, 95); + QColor beige(236, 182, 120); + QColor slightlyOpaqueBlack(0, 0, 0, 63); + + QPixmap backgroundImage(":/images/woodbackground.png"); + QPixmap buttonImage(":/images/woodbutton.png"); + QPixmap midImage = buttonImage; + + QPainter painter; + painter.begin(&midImage); + painter.setPen(Qt::NoPen); + painter.fillRect(midImage.rect(), slightlyOpaqueBlack); + painter.end(); +//! [0] + +//! [1] + palette = QPalette(brown); + + palette.setBrush(QPalette::BrightText, Qt::white); + palette.setBrush(QPalette::Base, beige); + palette.setBrush(QPalette::Highlight, Qt::darkGreen); + setTexture(palette, QPalette::Button, buttonImage); + setTexture(palette, QPalette::Mid, midImage); + setTexture(palette, QPalette::Window, backgroundImage); + + QBrush brush = palette.background(); + brush.setColor(brush.color().dark()); + + palette.setBrush(QPalette::Disabled, QPalette::WindowText, brush); + palette.setBrush(QPalette::Disabled, QPalette::Text, brush); + palette.setBrush(QPalette::Disabled, QPalette::ButtonText, brush); + palette.setBrush(QPalette::Disabled, QPalette::Base, brush); + palette.setBrush(QPalette::Disabled, QPalette::Button, brush); + palette.setBrush(QPalette::Disabled, QPalette::Mid, brush); +} +//! [1] + +//! [3] +void NorwegianWoodStyle::polish(QWidget *widget) +//! [3] //! [4] +{ + if (qobject_cast<QPushButton *>(widget) + || qobject_cast<QComboBox *>(widget)) + widget->setAttribute(Qt::WA_Hover, true); +} +//! [4] + +//! [5] +void NorwegianWoodStyle::unpolish(QWidget *widget) +//! [5] //! [6] +{ + if (qobject_cast<QPushButton *>(widget) + || qobject_cast<QComboBox *>(widget)) + widget->setAttribute(Qt::WA_Hover, false); +} +//! [6] + +//! [7] +int NorwegianWoodStyle::pixelMetric(PixelMetric metric, +//! [7] //! [8] + const QStyleOption *option, + const QWidget *widget) const +{ + switch (metric) { + case PM_ComboBoxFrameWidth: + return 8; + case PM_ScrollBarExtent: + return QMotifStyle::pixelMetric(metric, option, widget) + 4; + default: + return QMotifStyle::pixelMetric(metric, option, widget); + } +} +//! [8] + +//! [9] +int NorwegianWoodStyle::styleHint(StyleHint hint, const QStyleOption *option, +//! [9] //! [10] + const QWidget *widget, + QStyleHintReturn *returnData) const +{ + switch (hint) { + case SH_DitherDisabledText: + return int(false); + case SH_EtchDisabledText: + return int(true); + default: + return QMotifStyle::styleHint(hint, option, widget, returnData); + } +} +//! [10] + +//! [11] +void NorwegianWoodStyle::drawPrimitive(PrimitiveElement element, +//! [11] //! [12] + const QStyleOption *option, + QPainter *painter, + const QWidget *widget) const +{ + switch (element) { + case PE_PanelButtonCommand: + { + int delta = (option->state & State_MouseOver) ? 64 : 0; + QColor slightlyOpaqueBlack(0, 0, 0, 63); + QColor semiTransparentWhite(255, 255, 255, 127 + delta); + QColor semiTransparentBlack(0, 0, 0, 127 - delta); + + int x, y, width, height; + option->rect.getRect(&x, &y, &width, &height); +//! [12] + +//! [13] + QPainterPath roundRect = roundRectPath(option->rect); +//! [13] //! [14] + int radius = qMin(width, height) / 2; +//! [14] + +//! [15] + QBrush brush; +//! [15] //! [16] + bool darker; + + const QStyleOptionButton *buttonOption = + qstyleoption_cast<const QStyleOptionButton *>(option); + if (buttonOption + && (buttonOption->features & QStyleOptionButton::Flat)) { + brush = option->palette.background(); + darker = (option->state & (State_Sunken | State_On)); + } else { + if (option->state & (State_Sunken | State_On)) { + brush = option->palette.mid(); + darker = !(option->state & State_Sunken); + } else { + brush = option->palette.button(); + darker = false; +//! [16] //! [17] + } +//! [17] //! [18] + } +//! [18] + +//! [19] + painter->save(); +//! [19] //! [20] + painter->setRenderHint(QPainter::Antialiasing, true); +//! [20] //! [21] + painter->fillPath(roundRect, brush); +//! [21] //! [22] + if (darker) +//! [22] //! [23] + painter->fillPath(roundRect, slightlyOpaqueBlack); +//! [23] + +//! [24] + int penWidth; +//! [24] //! [25] + if (radius < 10) + penWidth = 3; + else if (radius < 20) + penWidth = 5; + else + penWidth = 7; + + QPen topPen(semiTransparentWhite, penWidth); + QPen bottomPen(semiTransparentBlack, penWidth); + + if (option->state & (State_Sunken | State_On)) + qSwap(topPen, bottomPen); +//! [25] + +//! [26] + int x1 = x; + int x2 = x + radius; + int x3 = x + width - radius; + int x4 = x + width; + + if (option->direction == Qt::RightToLeft) { + qSwap(x1, x4); + qSwap(x2, x3); + } + + QPolygon topHalf; + topHalf << QPoint(x1, y) + << QPoint(x4, y) + << QPoint(x3, y + radius) + << QPoint(x2, y + height - radius) + << QPoint(x1, y + height); + + painter->setClipPath(roundRect); + painter->setClipRegion(topHalf, Qt::IntersectClip); + painter->setPen(topPen); + painter->drawPath(roundRect); +//! [26] //! [32] + + QPolygon bottomHalf = topHalf; + bottomHalf[0] = QPoint(x4, y + height); + + painter->setClipPath(roundRect); + painter->setClipRegion(bottomHalf, Qt::IntersectClip); + painter->setPen(bottomPen); + painter->drawPath(roundRect); + + painter->setPen(option->palette.foreground().color()); + painter->setClipping(false); + painter->drawPath(roundRect); + + painter->restore(); + } + break; +//! [32] //! [33] + default: +//! [33] //! [34] + QMotifStyle::drawPrimitive(element, option, painter, widget); + } +} +//! [34] + +//! [35] +void NorwegianWoodStyle::drawControl(ControlElement element, +//! [35] //! [36] + const QStyleOption *option, + QPainter *painter, + const QWidget *widget) const +{ + switch (element) { + case CE_PushButtonLabel: + { + QStyleOptionButton myButtonOption; + const QStyleOptionButton *buttonOption = + qstyleoption_cast<const QStyleOptionButton *>(option); + if (buttonOption) { + myButtonOption = *buttonOption; + if (myButtonOption.palette.currentColorGroup() + != QPalette::Disabled) { + if (myButtonOption.state & (State_Sunken | State_On)) { + myButtonOption.palette.setBrush(QPalette::ButtonText, + myButtonOption.palette.brightText()); + } + } + } + QMotifStyle::drawControl(element, &myButtonOption, painter, widget); + } + break; + default: + QMotifStyle::drawControl(element, option, painter, widget); + } +} +//! [36] + +//! [37] +void NorwegianWoodStyle::setTexture(QPalette &palette, QPalette::ColorRole role, +//! [37] //! [38] + const QPixmap &pixmap) +{ + for (int i = 0; i < QPalette::NColorGroups; ++i) { + QColor color = palette.brush(QPalette::ColorGroup(i), role).color(); + palette.setBrush(QPalette::ColorGroup(i), role, QBrush(color, pixmap)); + } +} +//! [38] + +//! [39] +QPainterPath NorwegianWoodStyle::roundRectPath(const QRect &rect) +//! [39] //! [40] +{ + int radius = qMin(rect.width(), rect.height()) / 2; + int diam = 2 * radius; + + int x1, y1, x2, y2; + rect.getCoords(&x1, &y1, &x2, &y2); + + QPainterPath path; + path.moveTo(x2, y1 + radius); + path.arcTo(QRect(x2 - diam, y1, diam, diam), 0.0, +90.0); + path.lineTo(x1 + radius, y1); + path.arcTo(QRect(x1, y1, diam, diam), 90.0, +90.0); + path.lineTo(x1, y2 - radius); + path.arcTo(QRect(x1, y2 - diam, diam, diam), 180.0, +90.0); + path.lineTo(x1 + radius, y2); + path.arcTo(QRect(x2 - diam, y2 - diam, diam, diam), 270.0, +90.0); + path.closeSubpath(); + return path; +} +//! [40] diff --git a/examples/widgets/styles/norwegianwoodstyle.h b/examples/widgets/styles/norwegianwoodstyle.h new file mode 100644 index 0000000..07c7797 --- /dev/null +++ b/examples/widgets/styles/norwegianwoodstyle.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** 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 NORWEGIANWOODSTYLE_H +#define NORWEGIANWOODSTYLE_H + +#include <QMotifStyle> +#include <QPalette> + +QT_BEGIN_NAMESPACE +class QPainterPath; +QT_END_NAMESPACE + +//! [0] +class NorwegianWoodStyle : public QMotifStyle +{ + Q_OBJECT + +public: + NorwegianWoodStyle() {} + + void polish(QPalette &palette); + void polish(QWidget *widget); + void unpolish(QWidget *widget); + int pixelMetric(PixelMetric metric, const QStyleOption *option, + const QWidget *widget) const; + int styleHint(StyleHint hint, const QStyleOption *option, + const QWidget *widget, QStyleHintReturn *returnData) const; + void drawPrimitive(PrimitiveElement element, const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + void drawControl(ControlElement control, const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; + +private: + static void setTexture(QPalette &palette, QPalette::ColorRole role, + const QPixmap &pixmap); + static QPainterPath roundRectPath(const QRect &rect); +}; +//! [0] + +#endif diff --git a/examples/widgets/styles/styles.pro b/examples/widgets/styles/styles.pro new file mode 100644 index 0000000..4c6c682 --- /dev/null +++ b/examples/widgets/styles/styles.pro @@ -0,0 +1,14 @@ +HEADERS = norwegianwoodstyle.h \ + widgetgallery.h +SOURCES = main.cpp \ + norwegianwoodstyle.cpp \ + widgetgallery.cpp +RESOURCES = styles.qrc + +REQUIRES += "contains(styles, motif)" + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/widgets/styles +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS styles.pro images +sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/styles +INSTALLS += target sources diff --git a/examples/widgets/styles/styles.qrc b/examples/widgets/styles/styles.qrc new file mode 100644 index 0000000..4fdad8d --- /dev/null +++ b/examples/widgets/styles/styles.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>images/woodbutton.png</file> + <file>images/woodbackground.png</file> +</qresource> +</RCC> diff --git a/examples/widgets/styles/widgetgallery.cpp b/examples/widgets/styles/widgetgallery.cpp new file mode 100644 index 0000000..9a071a6 --- /dev/null +++ b/examples/widgets/styles/widgetgallery.cpp @@ -0,0 +1,276 @@ +/**************************************************************************** +** +** 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 "norwegianwoodstyle.h" +#include "widgetgallery.h" + +//! [0] +WidgetGallery::WidgetGallery(QWidget *parent) + : QDialog(parent) +{ + originalPalette = QApplication::palette(); + + styleComboBox = new QComboBox; + styleComboBox->addItem("NorwegianWood"); + styleComboBox->addItems(QStyleFactory::keys()); + + styleLabel = new QLabel(tr("&Style:")); + styleLabel->setBuddy(styleComboBox); + + useStylePaletteCheckBox = new QCheckBox(tr("&Use style's standard palette")); + useStylePaletteCheckBox->setChecked(true); + + disableWidgetsCheckBox = new QCheckBox(tr("&Disable widgets")); + + createTopLeftGroupBox(); + createTopRightGroupBox(); + createBottomLeftTabWidget(); + createBottomRightGroupBox(); + createProgressBar(); +//! [0] + +//! [1] + connect(styleComboBox, SIGNAL(activated(const QString &)), +//! [1] //! [2] + this, SLOT(changeStyle(const QString &))); + connect(useStylePaletteCheckBox, SIGNAL(toggled(bool)), + this, SLOT(changePalette())); + connect(disableWidgetsCheckBox, SIGNAL(toggled(bool)), + topLeftGroupBox, SLOT(setDisabled(bool))); + connect(disableWidgetsCheckBox, SIGNAL(toggled(bool)), + topRightGroupBox, SLOT(setDisabled(bool))); + connect(disableWidgetsCheckBox, SIGNAL(toggled(bool)), + bottomLeftTabWidget, SLOT(setDisabled(bool))); + connect(disableWidgetsCheckBox, SIGNAL(toggled(bool)), + bottomRightGroupBox, SLOT(setDisabled(bool))); +//! [2] + +//! [3] + QHBoxLayout *topLayout = new QHBoxLayout; +//! [3] //! [4] + topLayout->addWidget(styleLabel); + topLayout->addWidget(styleComboBox); + topLayout->addStretch(1); + topLayout->addWidget(useStylePaletteCheckBox); + topLayout->addWidget(disableWidgetsCheckBox); + + QGridLayout *mainLayout = new QGridLayout; + mainLayout->addLayout(topLayout, 0, 0, 1, 2); + mainLayout->addWidget(topLeftGroupBox, 1, 0); + mainLayout->addWidget(topRightGroupBox, 1, 1); + mainLayout->addWidget(bottomLeftTabWidget, 2, 0); + mainLayout->addWidget(bottomRightGroupBox, 2, 1); + mainLayout->addWidget(progressBar, 3, 0, 1, 2); + mainLayout->setRowStretch(1, 1); + mainLayout->setRowStretch(2, 1); + mainLayout->setColumnStretch(0, 1); + mainLayout->setColumnStretch(1, 1); + setLayout(mainLayout); + + setWindowTitle(tr("Styles")); + changeStyle("NorwegianWood"); +} +//! [4] + +//! [5] +void WidgetGallery::changeStyle(const QString &styleName) +//! [5] //! [6] +{ + if (styleName == "NorwegianWood") { + QApplication::setStyle(new NorwegianWoodStyle); + } else { + QApplication::setStyle(QStyleFactory::create(styleName)); + } + changePalette(); +} +//! [6] + +//! [7] +void WidgetGallery::changePalette() +//! [7] //! [8] +{ + if (useStylePaletteCheckBox->isChecked()) + QApplication::setPalette(QApplication::style()->standardPalette()); + else + QApplication::setPalette(originalPalette); +} +//! [8] + +//! [9] +void WidgetGallery::advanceProgressBar() +//! [9] //! [10] +{ + int curVal = progressBar->value(); + int maxVal = progressBar->maximum(); + progressBar->setValue(curVal + (maxVal - curVal) / 100); +} +//! [10] + +//! [11] +void WidgetGallery::createTopLeftGroupBox() +//! [11] //! [12] +{ + topLeftGroupBox = new QGroupBox(tr("Group 1")); + + radioButton1 = new QRadioButton(tr("Radio button 1")); + radioButton2 = new QRadioButton(tr("Radio button 2")); + radioButton3 = new QRadioButton(tr("Radio button 3")); + radioButton1->setChecked(true); + + checkBox = new QCheckBox(tr("Tri-state check box")); + checkBox->setTristate(true); + checkBox->setCheckState(Qt::PartiallyChecked); + + QVBoxLayout *layout = new QVBoxLayout; + layout->addWidget(radioButton1); + layout->addWidget(radioButton2); + layout->addWidget(radioButton3); + layout->addWidget(checkBox); + layout->addStretch(1); + topLeftGroupBox->setLayout(layout); +} +//! [12] + +void WidgetGallery::createTopRightGroupBox() +{ + topRightGroupBox = new QGroupBox(tr("Group 2")); + + defaultPushButton = new QPushButton(tr("Default Push Button")); + defaultPushButton->setDefault(true); + + togglePushButton = new QPushButton(tr("Toggle Push Button")); + togglePushButton->setCheckable(true); + togglePushButton->setChecked(true); + + flatPushButton = new QPushButton(tr("Flat Push Button")); + flatPushButton->setFlat(true); + + QVBoxLayout *layout = new QVBoxLayout; + layout->addWidget(defaultPushButton); + layout->addWidget(togglePushButton); + layout->addWidget(flatPushButton); + layout->addStretch(1); + topRightGroupBox->setLayout(layout); +} + +void WidgetGallery::createBottomLeftTabWidget() +{ + bottomLeftTabWidget = new QTabWidget; + bottomLeftTabWidget->setSizePolicy(QSizePolicy::Preferred, + QSizePolicy::Ignored); + + QWidget *tab1 = new QWidget; + tableWidget = new QTableWidget(10, 10); + + QHBoxLayout *tab1hbox = new QHBoxLayout; + tab1hbox->setMargin(5); + tab1hbox->addWidget(tableWidget); + tab1->setLayout(tab1hbox); + + QWidget *tab2 = new QWidget; + textEdit = new QTextEdit; + + textEdit->setPlainText(tr("Twinkle, twinkle, little star,\n" + "How I wonder what you are.\n" + "Up above the world so high,\n" + "Like a diamond in the sky.\n" + "Twinkle, twinkle, little star,\n" + "How I wonder what you are!\n")); + + QHBoxLayout *tab2hbox = new QHBoxLayout; + tab2hbox->setMargin(5); + tab2hbox->addWidget(textEdit); + tab2->setLayout(tab2hbox); + + bottomLeftTabWidget->addTab(tab1, tr("&Table")); + bottomLeftTabWidget->addTab(tab2, tr("Text &Edit")); +} + +void WidgetGallery::createBottomRightGroupBox() +{ + bottomRightGroupBox = new QGroupBox(tr("Group 3")); + bottomRightGroupBox->setCheckable(true); + bottomRightGroupBox->setChecked(true); + + lineEdit = new QLineEdit("s3cRe7"); + lineEdit->setEchoMode(QLineEdit::Password); + + spinBox = new QSpinBox(bottomRightGroupBox); + spinBox->setValue(50); + + dateTimeEdit = new QDateTimeEdit(bottomRightGroupBox); + dateTimeEdit->setDateTime(QDateTime::currentDateTime()); + + slider = new QSlider(Qt::Horizontal, bottomRightGroupBox); + slider->setValue(40); + + scrollBar = new QScrollBar(Qt::Horizontal, bottomRightGroupBox); + scrollBar->setValue(60); + + dial = new QDial(bottomRightGroupBox); + dial->setValue(30); + dial->setNotchesVisible(true); + + QGridLayout *layout = new QGridLayout; + layout->addWidget(lineEdit, 0, 0, 1, 2); + layout->addWidget(spinBox, 1, 0, 1, 2); + layout->addWidget(dateTimeEdit, 2, 0, 1, 2); + layout->addWidget(slider, 3, 0); + layout->addWidget(scrollBar, 4, 0); + layout->addWidget(dial, 3, 1, 2, 1); + layout->setRowStretch(5, 1); + bottomRightGroupBox->setLayout(layout); +} + +//! [13] +void WidgetGallery::createProgressBar() +{ + progressBar = new QProgressBar; + progressBar->setRange(0, 10000); + progressBar->setValue(0); + + QTimer *timer = new QTimer(this); + connect(timer, SIGNAL(timeout()), this, SLOT(advanceProgressBar())); + timer->start(1000); +} +//! [13] diff --git a/examples/widgets/styles/widgetgallery.h b/examples/widgets/styles/widgetgallery.h new file mode 100644 index 0000000..f9f1723 --- /dev/null +++ b/examples/widgets/styles/widgetgallery.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** 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 WIDGETGALLERY_H +#define WIDGETGALLERY_H + +#include <QDialog> + +QT_BEGIN_NAMESPACE +class QCheckBox; +class QComboBox; +class QDateTimeEdit; +class QDial; +class QGroupBox; +class QLabel; +class QLineEdit; +class QProgressBar; +class QPushButton; +class QRadioButton; +class QScrollBar; +class QSlider; +class QSpinBox; +class QTabWidget; +class QTableWidget; +class QTextEdit; +QT_END_NAMESPACE + +//! [0] +class WidgetGallery : public QDialog +{ + Q_OBJECT + +public: + WidgetGallery(QWidget *parent = 0); + +private slots: + void changeStyle(const QString &styleName); + void changePalette(); + void advanceProgressBar(); + +private: + void createTopLeftGroupBox(); + void createTopRightGroupBox(); + void createBottomLeftTabWidget(); + void createBottomRightGroupBox(); + void createProgressBar(); + + QPalette originalPalette; + + QLabel *styleLabel; + QComboBox *styleComboBox; + QCheckBox *useStylePaletteCheckBox; + QCheckBox *disableWidgetsCheckBox; +//! [0] + + QGroupBox *topLeftGroupBox; + QRadioButton *radioButton1; + QRadioButton *radioButton2; + QRadioButton *radioButton3; + QCheckBox *checkBox; + + QGroupBox *topRightGroupBox; + QPushButton *defaultPushButton; + QPushButton *togglePushButton; + QPushButton *flatPushButton; + + QTabWidget *bottomLeftTabWidget; + QTableWidget *tableWidget; + QTextEdit *textEdit; + + QGroupBox *bottomRightGroupBox; + QLineEdit *lineEdit; + QSpinBox *spinBox; + QDateTimeEdit *dateTimeEdit; + QSlider *slider; + QScrollBar *scrollBar; + QDial *dial; + + QProgressBar *progressBar; +//! [1] +}; +//! [1] + +#endif |