⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qplastiquestyle.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            } else {                painter->setPen(option->palette.background().color().light(104));                painter->drawLine(option->rect.left(), option->rect.top(),                                  option->rect.left(), option->rect.bottom());                painter->setPen(alphaCornerColor);                painter->drawLine(option->rect.right(), option->rect.top(),                                  option->rect.right(), option->rect.bottom());            }            painter->setPen(oldPen);        }        break;#endif // QT_NO_MAINWINDOW    case PE_PanelButtonTool:        // Draws a tool button (f.ex., in QToolBar and QTabBar)        if ((option->state & State_Enabled) || !(option->state & State_AutoRaise))            qt_plastique_drawShadedPanel(painter, option, true, widget);        break;#ifndef QT_NO_TOOLBAR    case PE_IndicatorToolBarHandle: {        QPixmap cache;        QRect rect = option->rect;#ifdef QT3_SUPPORT        if (widget && widget->inherits("Q3DockWindowHandle") && widget->parentWidget()->inherits("Q3DockWindow")) {            if (!(option->state & State_Horizontal))                rect.adjust(2, 0, -2, 0);        }#endif        QString pixmapName = uniqueName("toolbarhandle", option, rect.size());        if (!UsePixmapCache || !QPixmapCache::find(pixmapName, cache)) {            cache = QPixmap(rect.size());            cache.fill(Qt::blue);            QPainter cachePainter(&cache);            QRect cacheRect(QPoint(0, 0), rect.size());            if (widget)                cachePainter.fillRect(cacheRect, option->palette.brush(widget->backgroundRole()));            else                cachePainter.fillRect(cacheRect, option->palette.background());            QImage handle(qt_toolbarhandle);            handle.setColor(1, alphaCornerColor.rgba());            handle.setColor(2, mergedColors(alphaCornerColor, option->palette.base().color()).rgba());            handle.setColor(3, option->palette.base().color().rgba());            if (option->state & State_Horizontal) {                int nchunks = cacheRect.height() / handle.height();                int indent = (cacheRect.height() - (nchunks * handle.height())) / 2;                for (int i = 0; i < nchunks; ++i)                    cachePainter.drawImage(QPoint(cacheRect.left() + 3, cacheRect.top() + indent + i * handle.height()),                                           handle);            } else {                int nchunks = cacheRect.width() / handle.width();                int indent = (cacheRect.width() - (nchunks * handle.width())) / 2;                for (int i = 0; i < nchunks; ++i)                    cachePainter.drawImage(QPoint(cacheRect.left() + indent + i * handle.width(), cacheRect.top() + 3),                                           handle);            }            cachePainter.end();            if (UsePixmapCache)                QPixmapCache::insert(pixmapName, cache);        }        painter->drawPixmap(rect.topLeft(), cache);        break;    }    case PE_IndicatorToolBarSeparator: {        QPen oldPen = painter->pen();        painter->setPen(alphaCornerColor);        if (option->state & State_Horizontal) {            painter->drawLine(option->rect.left(), option->rect.top() + 1, option->rect.left(), option->rect.bottom() - 2);            painter->setPen(option->palette.base().color());            painter->drawLine(option->rect.right(), option->rect.top() + 1, option->rect.right(), option->rect.bottom() - 2);        } else {            painter->drawLine(option->rect.left() + 1, option->rect.top(), option->rect.right() - 2, option->rect.top());            painter->setPen(option->palette.base().color());            painter->drawLine(option->rect.left() + 1, option->rect.bottom(), option->rect.right() - 2, option->rect.bottom());        }        painter->setPen(oldPen);        break;    }#endif // QT_NO_TOOLBAR    case PE_PanelButtonCommand:        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {            bool down = (button->state & State_Sunken) || (button->state & State_On);            if ((button->features & QStyleOptionButton::Flat) && !down)                break;            bool hover = (button->state & State_Enabled) && (button->state & State_MouseOver);            bool isDefault = (button->features & QStyleOptionButton::DefaultButton);            bool isEnabled = (button->state & State_Enabled);            QRect rect = option->rect;            QPixmap cache;            QString pixmapName = uniqueName("panelbuttoncommand", option, rect.size());            if (isDefault)                pixmapName += QLatin1String("-") + QString::number(int(button->features), 16);            if (!UsePixmapCache || !QPixmapCache::find(pixmapName, cache)) {                cache = QPixmap(rect.size());                cache.fill(Qt::white);                QRect pixmapRect(0, 0, rect.width(), rect.height());                QPainter buttonPainter(&cache);                if (widget) {                    buttonPainter.fillRect(pixmapRect, option->palette.brush(widget->backgroundRole()));                } else {                    buttonPainter.fillRect(pixmapRect, option->palette.background());                }                if (isEnabled) {                    // gradient fill                    QRect gradRect = pixmapRect.adjusted(2, 2, -2, -2);                    if (down) {                        qt_plastique_draw_gradient(&buttonPainter, gradRect,                                                   option->palette.button().color().dark(111),                                                   option->palette.button().color().dark(106));                    } else {                        if (hover) {                            qt_plastique_draw_gradient(&buttonPainter, gradRect,                                                       highlightedGradientStartColor,                                                       highlightedGradientStopColor);                        } else {                            qt_plastique_draw_gradient(&buttonPainter, gradRect,                                                       gradientStartColor,                                                       gradientStopColor);                        }                    }                }                if (isDefault) {                    buttonPainter.setPen(borderColor.dark(105));                    buttonPainter.drawLine(pixmapRect.left() + 3, pixmapRect.top() + 1, pixmapRect.right() - 3, pixmapRect.top() + 1);                    buttonPainter.drawLine(pixmapRect.left() + 3, pixmapRect.bottom() - 1, pixmapRect.right() - 3, pixmapRect.bottom() - 1);                    buttonPainter.drawLine(pixmapRect.left() + 1, pixmapRect.top() + 3, pixmapRect.left() + 1, pixmapRect.bottom() - 3);                    buttonPainter.drawLine(pixmapRect.right() - 1, pixmapRect.top() + 3, pixmapRect.right() - 1, pixmapRect.bottom() - 3);                    buttonPainter.drawPoint(pixmapRect.left() + 2, pixmapRect.top() + 2);                    buttonPainter.drawPoint(pixmapRect.right() - 2, pixmapRect.top() + 2);                    buttonPainter.drawPoint(pixmapRect.left() + 2, pixmapRect.bottom() - 2);                    buttonPainter.drawPoint(pixmapRect.right() - 2, pixmapRect.bottom() - 2);                    QColor outlineColor = mergedColors(alphaCornerColor.dark(110), option->palette.background().color());                    buttonPainter.setPen(outlineColor);                    buttonPainter.drawLine(pixmapRect.left() + 2, pixmapRect.top(), pixmapRect.right() - 2, pixmapRect.top());                    buttonPainter.drawLine(pixmapRect.left() + 2, pixmapRect.bottom(), pixmapRect.right() - 2, pixmapRect.bottom());                    buttonPainter.drawLine(pixmapRect.left(), pixmapRect.top() + 2, pixmapRect.left(), pixmapRect.bottom() - 2);                    buttonPainter.drawLine(pixmapRect.right(), pixmapRect.top() + 2, pixmapRect.right(), pixmapRect.bottom() - 2);                    buttonPainter.drawPoint(pixmapRect.left() + 1, pixmapRect.top() + 1);                    buttonPainter.drawPoint(pixmapRect.right() - 1, pixmapRect.top() + 1);                    buttonPainter.drawPoint(pixmapRect.left() + 1, pixmapRect.bottom() - 1);                    buttonPainter.drawPoint(pixmapRect.right() - 1, pixmapRect.bottom() - 1);                    buttonPainter.setPen(mergedColors(outlineColor, option->palette.background().color()));                    buttonPainter.drawPoint(pixmapRect.left() + 1, pixmapRect.top());                    buttonPainter.drawPoint(pixmapRect.left() + 1, pixmapRect.bottom());                    buttonPainter.drawPoint(pixmapRect.right() - 1, pixmapRect.top());                    buttonPainter.drawPoint(pixmapRect.right() - 1, pixmapRect.bottom());                    buttonPainter.drawPoint(pixmapRect.left(), pixmapRect.top() + 1);                    buttonPainter.drawPoint(pixmapRect.left(), pixmapRect.bottom() - 1);                    buttonPainter.drawPoint(pixmapRect.right(), pixmapRect.top() + 1);                    buttonPainter.drawPoint(pixmapRect.right(), pixmapRect.bottom() - 1);                    buttonPainter.setPen(mergedColors(outlineColor, borderColor.dark(105)));                    buttonPainter.drawPoint(pixmapRect.left() + 2, pixmapRect.top() + 1);                    buttonPainter.drawPoint(pixmapRect.right() - 2, pixmapRect.top() + 1);                    buttonPainter.drawPoint(pixmapRect.left() + 2, pixmapRect.bottom() - 1);                    buttonPainter.drawPoint(pixmapRect.right() - 2, pixmapRect.bottom() - 1);                    buttonPainter.drawPoint(pixmapRect.left() + 1, pixmapRect.top() + 2);                    buttonPainter.drawPoint(pixmapRect.right() - 1, pixmapRect.top() + 2);                    buttonPainter.drawPoint(pixmapRect.left() + 1, pixmapRect.bottom() - 2);                    buttonPainter.drawPoint(pixmapRect.right() - 1, pixmapRect.bottom() - 2);                } else {                    // outer border                    buttonPainter.setPen(borderColor);                    buttonPainter.drawLine(pixmapRect.left() + 3, pixmapRect.top() + 1,                                           pixmapRect.right() - 3, pixmapRect.top() + 1);                    buttonPainter.drawLine(pixmapRect.left() + 3, pixmapRect.bottom() - 1,                                           pixmapRect.right() - 3, pixmapRect.bottom() - 1);                    buttonPainter.drawLine(pixmapRect.left() + 1, pixmapRect.top() + 3,                                           pixmapRect.left() + 1, pixmapRect.bottom() - 3);                    buttonPainter.drawLine(pixmapRect.right() - 1, pixmapRect.top() + 3,                                           pixmapRect.right() - 1, pixmapRect.bottom() - 3);                    buttonPainter.drawPoint(pixmapRect.left() + 2, pixmapRect.top() + 2);                    buttonPainter.drawPoint(pixmapRect.right() - 2, pixmapRect.top() + 2);                    buttonPainter.drawPoint(pixmapRect.left() + 2, pixmapRect.bottom() - 2);                    buttonPainter.drawPoint(pixmapRect.right() - 2, pixmapRect.bottom() - 2);                    // "antialiased" corners                    buttonPainter.setPen(alphaCornerColor);                    buttonPainter.drawPoint(pixmapRect.left() + 2, pixmapRect.top() + 1);                    buttonPainter.drawPoint(pixmapRect.left() + 2, pixmapRect.bottom() - 1);                    buttonPainter.drawPoint(pixmapRect.right() - 2, pixmapRect.top() + 1);                    buttonPainter.drawPoint(pixmapRect.right() - 2, pixmapRect.bottom() - 1);                    buttonPainter.drawPoint(pixmapRect.left() + 1, pixmapRect.top() + 2);                    buttonPainter.drawPoint(pixmapRect.left() + 1, pixmapRect.bottom() - 2);                    buttonPainter.drawPoint(pixmapRect.right() - 1, pixmapRect.top() + 2);                    buttonPainter.drawPoint(pixmapRect.right() - 1, pixmapRect.bottom() - 2);                }                // inner border, top and bottom line                if (down) {                    buttonPainter.setPen(option->palette.button().color().light(89));                } else {                    if (hover) {                        buttonPainter.setPen(highlightedDarkInnerBorderColor);                    } else {                        buttonPainter.setPen(option->palette.button().color().light(103));                    }                }                buttonPainter.drawLine(pixmapRect.left() + 3, pixmapRect.top() + 2,                                       pixmapRect.right() - 3, pixmapRect.top() + 2);                if (down) {                    buttonPainter.setPen(option->palette.button().color().light(96));                } else {                    if (hover) {                        buttonPainter.setPen(highlightedDarkInnerBorderColor.dark(105));                    } else {                        buttonPainter.setPen(option->palette.button().color().light(91));                    }                }                buttonPainter.drawLine(pixmapRect.left() + 3, pixmapRect.bottom() - 2,                                        pixmapRect.right() - 3, pixmapRect.bottom() - 2);                QLinearGradient leftGrad(QPoint(pixmapRect.left() + 1, pixmapRect.top() + 2),                                         QPoint(pixmapRect.left() + 1, pixmapRect.bottom() - 2));                QLinearGradient rightGrad(QPoint(pixmapRect.left() + 1, pixmapRect.top() + 2),                                          QPoint(pixmapRect.left() + 1, pixmapRect.bottom() - 2));                // inner border, side lines w/gradient                if (down) {                    // left                    leftGrad.setColorAt(0, option->palette.button().color().light(88));                    leftGrad.setColorAt(1, option->palette.button().color().light(92));                    // right                    rightGrad.setColorAt(0, option->palette.button().color().light(92));                    rightGrad.setColorAt(1, option->palette.button().color().light(96));                } else {                    // left                    leftGrad.setColorAt(0, option->palette.button().color().light(102));                    leftGrad.setColorAt(1, option->palette.button().color().light(99));                    // right                    rightGrad.setColorAt(0, option->palette.button().color().light(99));                    rightGrad.setColorAt(1, option->palette.button().color().light(90));                }                buttonPainter.setPen(QPen(QBrush(leftGrad), 1));                buttonPainter.drawLine(pixmapRect.left() + 2, pixmapRect.top() + 3,                                        pixmapRect.left() + 2, pixmapRect.bottom() - 3);                buttonPainter.setPen(QPen(QBrush(rightGrad), 1));                buttonPainter.drawLine(pixmapRect.right() - 2, pixmapRect.top() + 3,                                       pixmapRect.right() - 2, pixmapRect.bottom() - 3);                if (!down && hover) {                    buttonPainter.setPen(highlightedLightInnerBorderColor);                    buttonPainter.drawLine(pixmapRect.left() + 2, pixmapRect.top() + 3,                                            pixmapRect.right() - 2, pixmapRect.top() + 3);                    buttonPainter.setPen(highlightedLightInnerBorderColor.dark(105));                    buttonPainter.drawLine(pixmapRect.left() + 2, pixmapRect.bottom() - 3,                                            pixmapRect.right() - 2, pixmapRect.bottom() - 3);                }                buttonPainter.end();                if (UsePixmapCache)                    QPixmapCache::insert(pixmapName, cache);            }            painter->drawPixmap(rect.topLeft(), cache);        }        break;    case PE_IndicatorCheckBox:        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {            bool hover = (button->state & State_Enabled) && (button->state & State_MouseOver);            QRect rect = option->rect;            QPixmap cache;            QString pixmapName = uniqueName("checkbox", option, option->rect.size());            if (!UsePixmapCache || !QPixmapCache::find(pixmapName, cache)) {                cache = QPixmap(rect.size());                cache.fill(Qt::white);                QRect pixmapRect(0, 0, rect.width(), rect.height());                QPainter checkBoxPainter(&cache);                // border                checkBoxPainter.setPen(borderColor);                checkBoxPainter.drawLine(pixmapRect.left() + 1, pixmapRect.top(),                                         pixmapRect.right() - 1, pixmapRect.top());                checkBoxPainter.drawLine(pixmapRect.left() + 1, pixmapRect.bottom(),                                         pixmapRect.right() - 1, pixmapRect.bottom());                checkBoxPainter.drawLine(pixmapRect.left(), pixmapRect.top() + 1,                                         pixmapRect.left(), pixmapRect.bottom() - 1);                checkBoxPainter.drawLine(pixmapRect.right(), pixmapRect.top() + 1,                                         pixmapRect.right(), pixmapRect.bottom() - 1);                // "antialiased" corners                checkBoxPainter.setPen(alphaCornerColor);                checkBoxPainter.drawPoint(pixmapRect.topLeft());                checkBoxPainter.drawPoint(pixmapRect.topRight());                checkBoxPainter.drawPoint(pixmapRect.bottomLeft());                checkBoxPainter.drawPoint(pixmapRect.bottomRight());                // fill background                QRect adjustedRect = option->rect;                QRect gradientRect(pixmapRect.left() + 1, pixmapRect.top() + 1,                                   pixmapRect.right() - pixmapRect.left() - 1,                                   pixmapRect.bottom() - pixmapRect.top() - 1);                if (hover) {                    qt_plastique_draw_gradient(&checkBoxPainter, gradientRect,                                               highlightedBaseGradientStartColor,                                               highlightedBaseGradientStopColor);                } else {                    qt_plastique_draw_gradient(&checkBoxPainter, gradientRect,                                               baseGradientStartColor,                                               baseGradientStopColor);                }                // draw highlighted border when hovering                if

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -