diff options
| author | Morten Engvoldsen <morten.engvoldsen@nokia.com> | 2011-02-23 20:32:21 (GMT) | 
|---|---|---|
| committer | Morten Engvoldsen <morten.engvoldsen@nokia.com> | 2011-02-23 20:32:21 (GMT) | 
| commit | c881e33e7e510204fabd061dac08a00b10b432fb (patch) | |
| tree | b5a5210eef8d309a17aca7d20b457879b584913f /doc/src/snippets/code/doc_src_styles.cpp | |
| parent | 309c48a70b46678ef92da441fcc2dc96ceb8fcf3 (diff) | |
| parent | 3c982b5d214cc7a37ace1d956ac8fb0b9a281722 (diff) | |
| download | Qt-c881e33e7e510204fabd061dac08a00b10b432fb.zip Qt-c881e33e7e510204fabd061dac08a00b10b432fb.tar.gz Qt-c881e33e7e510204fabd061dac08a00b10b432fb.tar.bz2  | |
Merge branch '4.7' into mimir
Diffstat (limited to 'doc/src/snippets/code/doc_src_styles.cpp')
| -rw-r--r-- | doc/src/snippets/code/doc_src_styles.cpp | 134 | 
1 files changed, 134 insertions, 0 deletions
diff --git a/doc/src/snippets/code/doc_src_styles.cpp b/doc/src/snippets/code/doc_src_styles.cpp new file mode 100644 index 0000000..a2a6fa9 --- /dev/null +++ b/doc/src/snippets/code/doc_src_styles.cpp @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation 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 Nokia Corporation and its Subsidiary(-ies) 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$ +** +****************************************************************************/ + +//! [0] +    opt.initFrom(q); +        if (down) +        opt.state |= QStyle::State_Sunken; +    if (tristate && noChange) +        opt.state |= QStyle::State_NoChange; +    else +        opt.state |= checked ? QStyle::State_On : +        QStyle::State_Off; +    if (q->testAttribute(Qt::WA_Hover) &&  q->underMouse()) { +        if (hovering) +        opt.state |= QStyle::State_MouseOver; +        else +        opt.state &= ~QStyle::State_MouseOver; +    } +    opt.text = text; +    opt.icon = icon; +    opt.iconSize = q->iconSize(); +//! [0] + + +//! [1] +    state = QStyle::State_None; +    if (widget->isEnabled()) +        state |= QStyle::State_Enabled; +    if (widget->hasFocus()) +        state |= QStyle::State_HasFocus; +    if (widget->window()->testAttribute(Qt::WA_KeyboardFocusChange)) +        state |= QStyle::State_KeyboardFocusChange; +    if (widget->underMouse()) +        state |= QStyle::State_MouseOver; +    if (widget->window()->isActiveWindow()) +        state |= QStyle::State_Active; +#ifdef Q_WS_MAC +    extern bool qt_mac_can_clickThrough(const QWidget *w); //qwidget_mac.cpp +    if (!(state & QStyle::State_Active) && !qt_mac_can_clickThrough(widget)) +        state &= ~QStyle::State_Enabled; +#endif +#ifdef QT_KEYPAD_NAVIGATION +    if (widget->hasEditFocus()) +        state |= QStyle::State_HasEditFocus; +#endif + +    direction = widget->layoutDirection(); +    rect = widget->rect(); +    palette = widget->palette(); +    fontMetrics = widget->fontMetrics(); +//! [1] + + +//! [2] +    QStylePainter p(this); +    QStyleOptionButton opt = d->getStyleOption(); +    p.drawControl(QStyle::CE_CheckBox, opt); +//! [2] + + +//! [3] +    QStyleOptionButton subopt = *btn; +    subopt.rect = subElementRect(SE_CheckBoxIndicator, btn, widget); +    drawPrimitive(PE_IndicatorCheckBox, &subopt, p, widget); +    subopt.rect = subElementRect(SE_CheckBoxContents, btn, widget); +    drawControl(CE_CheckBoxLabel, &subopt, p, widget); + +    if (btn->state & State_HasFocus) { +        QStyleOptionFocusRect fropt; +        fropt.QStyleOption::operator=(*btn); +        fropt.rect = subElementRect(SE_CheckBoxFocusRect, btn, widget); +        drawPrimitive(PE_FrameFocusRect, &fropt, p, widget); +    } +//! [3] + + +//! [4] +    const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt); +    uint alignment = visualAlignment(btn->direction, Qt::AlignLeft | Qt::AlignVCenter); + +    if (!styleHint(SH_UnderlineShortcut, btn, widget)) +        alignment |= Qt::TextHideMnemonic; +    QPixmap pix; +    QRect textRect = btn->rect; +    if (!btn->icon.isNull()) { +        pix = btn->icon.pixmap(btn->iconSize, btn->state & State_Enabled ? QIcon::Normal : QIcon::Disabled); +        drawItemPixmap(p, btn->rect, alignment, pix); +        if (btn->direction == Qt::RightToLeft) +            textRect.setRight(textRect.right() - btn->iconSize.width() - 4); +        else +            textRect.setLeft(textRect.left() + btn->iconSize.width() + 4); +    } +    if (!btn->text.isEmpty()){ +        drawItemText(p, textRect, alignment | Qt::TextShowMnemonic, +            btn->palette, btn->state & State_Enabled, btn->text, QPalette::WindowText); +    } +//! [4]  | 
