📄 qplastiquestyle.cpp
字号:
} 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 + -