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

📄 qplastiquestyle.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#endif{    if (!qgetenv("QT_STYLE_NO_PIXMAPCACHE").isNull())        UsePixmapCache = false;}/*!  \internal */QPlastiqueStylePrivate::~QPlastiqueStylePrivate(){}/*!    \class QPlastiqueStyle    \brief The QPlastiqueStyle class provides a widget style similar to the    Plastik style available in KDE.    The Plastique style provides a default look and feel for widgets on X11    that closely resembles the Plastik style, introduced by Sandro Giessl in    KDE 3.2.    \img qplastiquestyle.png    \sa QWindowsXPStyle, QMacStyle, QWindowsStyle, QCDEStyle, QMotifStyle*//*!    Constructs a QPlastiqueStyle object.*/QPlastiqueStyle::QPlastiqueStyle()    : QWindowsStyle(*new QPlastiqueStylePrivate){    setObjectName(QLatin1String("Plastique"));}/*!    Destructs the QPlastiqueStyle object.*/QPlastiqueStyle::~QPlastiqueStyle(){}/*!  \reimp*/void QPlastiqueStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,                                    QPainter *painter, const QWidget *widget) const{    Q_ASSERT(option);    QColor borderColor = option->palette.background().color().darker(178);    QColor gradientStartColor = option->palette.button().color().lighter(104);    QColor gradientStopColor = option->palette.button().color().darker(105);    QColor baseGradientStartColor = option->palette.base().color().darker(101);    QColor baseGradientStopColor = option->palette.base().color().darker(106);    QColor highlightedGradientStartColor = option->palette.button().color().lighter(101);    QColor highlightedGradientStopColor = mergedColors(option->palette.button().color(), option->palette.highlight().color(), 85);    QColor highlightedBaseGradientStartColor = option->palette.base().color();    QColor highlightedBaseGradientStopColor = mergedColors(option->palette.base().color().darker(105), option->palette.highlight().color(), 70);    QColor highlightedDarkInnerBorderColor = mergedColors(option->palette.button().color(), option->palette.highlight().color(), 35);    QColor highlightedLightInnerBorderColor = mergedColors(option->palette.button().color(), option->palette.highlight().color(), 58);    QColor alphaCornerColor;    if (widget) {        // ### backgroundrole/foregroundrole should be part of the style option        alphaCornerColor = mergedColors(option->palette.color(widget->backgroundRole()), borderColor);    } else {        alphaCornerColor = mergedColors(option->palette.background().color(), borderColor);    }    QColor alphaInnerColor = mergedColors(highlightedLightInnerBorderColor, gradientStartColor);    QColor alphaInnerColorNoHover = mergedColors(borderColor, gradientStartColor);    QColor alphaTextColor = mergedColors(option->palette.background().color(), option->palette.text().color());    QColor alphaLightTextColor = mergedColors(option->palette.background().color().lighter(250), option->palette.text().color().lighter(250));    QColor lightShadow = option->palette.button().color().lighter(105);    QColor shadowGradientStartColor = option->palette.button().color().darker(115);    QColor shadow = shadowGradientStartColor;    switch (element) {    case PE_IndicatorButtonDropDown:        drawPrimitive(PE_PanelButtonTool, option, painter, widget);        break;    case PE_FrameDefaultButton: {        if (!(option->state & QStyle::State_Enabled))            break;        painter->setPen(QPen(QColor(0, 0, 0, 127), 0));        const QLine lines[4] = {            QLine(option->rect.left() + 2, option->rect.top(),                  option->rect.right() - 2, option->rect.top()),            QLine(option->rect.left() + 2, option->rect.bottom(),                  option->rect.right() - 2, option->rect.bottom()),            QLine(option->rect.left(), option->rect.top() + 2,                  option->rect.left(), option->rect.bottom() - 2),            QLine(option->rect.right(), option->rect.top() + 2,                  option->rect.right(), option->rect.bottom() - 2) };        painter->drawLines(lines, 4);        QPoint points[8];        points[0] = QPoint(option->rect.left() + 1, option->rect.top() + 1);        points[1] = QPoint(option->rect.right() - 1, option->rect.top() + 1);        points[2] = QPoint(option->rect.left() + 1, option->rect.bottom() - 1);        points[3] = QPoint(option->rect.right() - 1, option->rect.bottom() - 1);        painter->drawPoints(points, 4);        painter->setPen(QPen(QColor(0, 0, 0, 63), 0));        points[0] = QPoint(option->rect.left() + 1, option->rect.top());        points[1] = QPoint(option->rect.right() - 1, option->rect.top());        points[2] = QPoint(option->rect.left(), option->rect.top() + 1);        points[3] = QPoint(option->rect.right(), option->rect.top() + 1);        points[4] = QPoint(option->rect.left() + 1, option->rect.bottom());        points[5] = QPoint(option->rect.right() - 1, option->rect.bottom());        points[6] = QPoint(option->rect.left(), option->rect.bottom() - 1);        points[7] = QPoint(option->rect.right(), option->rect.bottom() - 1);        painter->drawPoints(points, 8);        break;    }#ifndef QT_NO_TABWIDGET    case PE_FrameTabWidget:        if (const QStyleOptionTabWidgetFrame *twf = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) {            if (twf->shape != QTabBar::RoundedNorth && twf->shape != QTabBar::RoundedWest &&                twf->shape != QTabBar::RoundedSouth && twf->shape != QTabBar::RoundedEast) {                QWindowsStyle::drawPrimitive(element, option, painter, widget);                break;            }            int borderThickness = pixelMetric(PM_TabBarBaseOverlap, twf, widget);            bool reverse = (twf->direction == Qt::RightToLeft);            painter->save();            // Start by filling the contents of the tab widget frame (which is            // actually a panel).            painter->fillRect(option->rect.adjusted(1, 1, -1, -1), option->palette.window());            QRect tabBarRect;            switch (twf->shape) {            case QTabBar::RoundedNorth:                if (reverse)                    tabBarRect = QRect(twf->rect.right() - twf->leftCornerWidgetSize.width() - twf->tabBarSize.width() + 1, twf->rect.top(), twf->tabBarSize.width(), borderThickness);                else                    tabBarRect = QRect(twf->rect.left() + twf->leftCornerWidgetSize.width(), twf->rect.top(), twf->tabBarSize.width(), borderThickness);                break ;            case QTabBar::RoundedWest:                tabBarRect = QRect(twf->rect.left(), twf->rect.top() + twf->leftCornerWidgetSize.height(), borderThickness, twf->tabBarSize.height());                break ;            case QTabBar::RoundedEast:                tabBarRect = QRect(twf->rect.right() - borderThickness + 1, twf->rect.top()  + twf->leftCornerWidgetSize.height(),                                   borderThickness, twf->tabBarSize.height());                break ;            case QTabBar::RoundedSouth:                if (reverse)                    tabBarRect = QRect(twf->rect.right() - twf->leftCornerWidgetSize.width() - twf->tabBarSize.width() + 1,                                       twf->rect.bottom() - borderThickness + 1, twf->tabBarSize.width(), borderThickness);                else                    tabBarRect = QRect(twf->rect.left() + twf->leftCornerWidgetSize.width(),                                       twf->rect.bottom() - borderThickness + 1, twf->tabBarSize.width(), borderThickness);                break ;            default:                break;            }            QRegion region(twf->rect);            region -= tabBarRect;            painter->setClipRegion(region);            // Outer border            QLine leftLine = QLine(twf->rect.topLeft() + QPoint(0, 2), twf->rect.bottomLeft() - QPoint(0, 2));            QLine rightLine = QLine(twf->rect.topRight() + QPoint(0, 2), twf->rect.bottomRight() - QPoint(0, 2));            QLine bottomLine = QLine(twf->rect.bottomLeft() + QPoint(2, 0), twf->rect.bottomRight() - QPoint(2, 0));            QLine topLine = QLine(twf->rect.topLeft() + QPoint(2, 0), twf->rect.topRight() - QPoint(2, 0));            QBrush border = option->palette.shadow();            qBrushSetAlphaF(&border, 0.4);            painter->setPen(QPen(border, 0));            QVarLengthArray<QLine, 4> lines;            QVarLengthArray<QPoint, 8> points;            lines.append(topLine);            // Inner border            QLine innerLeftLine = QLine(leftLine.p1() + QPoint(1, 0), leftLine.p2() + QPoint(1, 0));            QLine innerRightLine = QLine(rightLine.p1() - QPoint(1, 0), rightLine.p2() - QPoint(1, 0));            QLine innerBottomLine = QLine(bottomLine.p1() - QPoint(0, 1), bottomLine.p2() - QPoint(0, 1));            QLine innerTopLine = QLine(topLine.p1() + QPoint(0, 1), topLine.p2() + QPoint(0, 1));            // Rounded Corner            QPoint leftBottomOuterCorner = QPoint(innerLeftLine.p2() + QPoint(0, 1));            QPoint leftBottomInnerCorner1 = QPoint(leftLine.p2() + QPoint(0, 1));            QPoint leftBottomInnerCorner2 = QPoint(bottomLine.p1() - QPoint(1, 0));            QPoint rightBottomOuterCorner = QPoint(innerRightLine.p2() + QPoint(0, 1));            QPoint rightBottomInnerCorner1 = QPoint(rightLine.p2() + QPoint(0, 1));            QPoint rightBottomInnerCorner2 = QPoint(bottomLine.p2() + QPoint(1, 0));            QPoint rightTopOuterCorner = QPoint(innerRightLine.p1() - QPoint(0, 1));            QPoint rightTopInnerCorner1 = QPoint(rightLine.p1() - QPoint(0, 1));            QPoint rightTopInnerCorner2 = QPoint(topLine.p2() + QPoint(1, 0));            QPoint leftTopOuterCorner = QPoint(innerLeftLine.p1() - QPoint(0, 1));            QPoint leftTopInnerCorner1 = QPoint(leftLine.p1() - QPoint(0, 1));            QPoint leftTopInnerCorner2 = QPoint(topLine.p1() - QPoint(1, 0));            lines.append(leftLine);            lines.append(rightLine);            lines.append(bottomLine);            painter->drawLines(lines.constData(), lines.size());            lines.clear();            points.append(leftBottomOuterCorner);            points.append(rightBottomOuterCorner);            points.append(rightTopOuterCorner);            points.append(leftTopOuterCorner);            painter->drawPoints(points.constData(), points.size());            points.clear();            QBrush innerTopLeft = option->palette.shadow();            qBrushSetAlphaF(&innerTopLeft, 0.075);            painter->setPen(QPen(innerTopLeft, 0));            lines.append(innerLeftLine);            lines.append(innerTopLine);            painter->drawLines(lines.constData(), lines.size());            lines.clear();            QBrush innerBottomRight = option->palette.shadow();            qBrushSetAlphaF(&innerBottomRight, 0.23);            painter->setPen(QPen(innerBottomRight, 0));            lines.append(innerRightLine);            lines.append(innerBottomLine);            painter->drawLines(lines.constData(), lines.size());            lines.clear();            QBrush corner = option->palette.shadow();            qBrushSetAlphaF(&corner, 0.25);            painter->setPen(QPen(corner, 0));            points.append(leftBottomInnerCorner1);            points.append(leftBottomInnerCorner2);            points.append(rightBottomInnerCorner1);            points.append(rightBottomInnerCorner2);            points.append(rightTopInnerCorner1);            points.append(rightTopInnerCorner2);            points.append(leftTopInnerCorner1);            points.append(leftTopInnerCorner2);            painter->drawPoints(points.constData(), points.size());            points.clear();            painter->restore();        }        break ;#endif // QT_NO_TABWIDGET#ifndef QT_NO_TABBAR    case PE_FrameTabBarBase:        if (const QStyleOptionTabBarBase *tbb = qstyleoption_cast<const QStyleOptionTabBarBase *>(option)) {            if (tbb->shape != QTabBar::RoundedNorth && tbb->shape != QTabBar::RoundedWest &&                tbb->shape != QTabBar::RoundedSouth && tbb->shape != QTabBar::RoundedEast) {                QWindowsStyle::drawPrimitive(element, option, painter, widget);                break;            }            painter->save();            QRegion region(tbb->rect);            region -= tbb->tabBarRect;            painter->setClipRegion(region);            QLine topLine = QLine(tbb->rect.bottomLeft() - QPoint(0, 1), tbb->rect.bottomRight() - QPoint(0, 1));            QLine bottomLine = QLine(tbb->rect.bottomLeft(), tbb->rect.bottomRight());            QBrush border = option->palette.shadow();            qBrushSetAlphaF(&border, 0.4);            QBrush innerTopLeft = option->palette.shadow();            qBrushSetAlphaF(&innerTopLeft, 0.075);            QBrush innerBottomRight = option->palette.shadow();            qBrushSetAlphaF(&innerBottomRight, 0.23);            QBrush corner = option->palette.shadow();            qBrushSetAlphaF(&corner, 0.25);            if (tbb->shape == QTabBar::RoundedSouth)                painter->setPen(QPen(corner, 0));            else                painter->setPen(QPen(border, 0));            painter->drawLine(topLine);            if (tbb->shape != QTabBar::RoundedSouth)                painter->setPen(QPen(innerTopLeft, 0));            else                painter->setPen(QPen(border, 0));            painter->drawLine(bottomLine);            painter->restore();        }        break ;#endif // QT_NO_TABBAR#ifndef QT_NO_GROUPBOX    case PE_FrameGroupBox:        if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(option)) {            QStyleOptionFrameV2 frameV2(*frame);            if (frameV2.features & QStyleOptionFrameV2::Flat) {                QPen oldPen = painter->pen();                painter->setPen(borderColor);                painter->drawLine(frameV2.rect.topLeft(), frameV2.rect.topRight());                painter->setPen(oldPen);            } else {                frameV2.state &= ~(State_Sunken | State_HasFocus);                drawPrimitive(PE_Frame, &frameV2, painter, widget);            }        }        break;#endif // QT_NO_GROUPBOX    case PE_Frame: {        QFrame::Shadow shadow = QFrame::Plain;        if (option->state & State_Sunken)            shadow = QFrame::Sunken;        else if (option->state & State_Raised)            shadow = QFrame::Raised;        qt_plastique_draw_frame(painter, option->rect, option, shadow);        break;    }#ifndef QT_NO_LINEEDIT    case PE_FrameLineEdit:        qt_plastique_draw_frame(painter, option->rect, option, QFrame::Sunken);        break;    case PE_PanelLineEdit:        if (const QStyleOptionFrame *lineEdit = qstyleoption_cast<const QStyleOptionFrame *>(option)) {            // Panel of a line edit inside combo box or spin box is drawn in CC_ComboBox and CC_SpinBox            if (widget) {#ifndef QT_NO_COMBOBOX                if (qobject_cast<const QComboBox *>(widget->parentWidget()))                    break;#endif#ifndef QT_NO_SPINBOX                if (qobject_cast<const QAbstractSpinBox *>(widget->parentWidget()))                    break;#endif            }

⌨️ 快捷键说明

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