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

📄 qplastiquestyle.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            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));            painter->setPen(borderColor);            painter->drawLine(leftLine);            painter->drawLine(rightLine);            painter->drawLine(bottomLine);            painter->drawPoint(leftBottomOuterCorner);            painter->drawPoint(rightBottomOuterCorner);            painter->drawPoint(rightTopOuterCorner);            painter->drawPoint(leftTopOuterCorner);            painter->setPen(lightShadow);            painter->drawLine(innerLeftLine);            painter->drawLine(innerTopLine);            painter->setPen(shadow);            painter->drawLine(innerRightLine);            painter->drawLine(innerBottomLine);            painter->setPen(alphaCornerColor);            painter->drawPoint(leftBottomInnerCorner1);            painter->drawPoint(leftBottomInnerCorner2);            painter->drawPoint(rightBottomInnerCorner1);            painter->drawPoint(rightBottomInnerCorner2);            painter->drawPoint(rightTopInnerCorner1);            painter->drawPoint(rightTopInnerCorner2);            painter->drawPoint(leftTopInnerCorner1);            painter->drawPoint(leftTopInnerCorner2);            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());            if (tbb->shape == QTabBar::RoundedSouth)                painter->setPen(alphaCornerColor);            else                painter->setPen(borderColor);            painter->drawLine(topLine);            if (tbb->shape != QTabBar::RoundedSouth)                painter->setPen(lightShadow);            else                painter->setPen(borderColor);            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#ifndef QT_NO_LINEEDIT    case PE_FrameLineEdit:        if (widget && widget->parent()) {            // Line edits use QPalette::Base as background role, so if we can            // get the parent's background role, we'll plot that into the four            // corner pixels.            QColor backgroundColor = option->palette.color(widget->parentWidget()->backgroundRole());            QPen oldPen = painter->pen();            painter->setPen(backgroundColor);            painter->drawPoint(option->rect.topLeft());            painter->drawPoint(option->rect.topRight());            painter->drawPoint(option->rect.bottomLeft());            painter->drawPoint(option->rect.bottomRight());            painter->setPen(oldPen);            alphaCornerColor = mergedColors(backgroundColor, borderColor);        }        // fall through#endif // QT_NO_LINEEDIT    case PE_Frame:#ifdef QT3_SUPPORT        if (widget && widget->inherits("Q3ToolBar")) {            QPen oldPen = painter->pen();            painter->setPen(option->palette.background().color().light(104));            painter->drawLine(option->rect.topLeft(), option->rect.bottomLeft());            painter->drawLine(option->rect.topLeft(), option->rect.topRight());            painter->setPen(alphaCornerColor);            painter->drawLine(option->rect.topRight(), option->rect.bottomRight());            painter->drawLine(option->rect.bottomLeft(), option->rect.bottomRight());            painter->setPen(oldPen);            break;        }        if (widget && widget->inherits("Q3DockWindow")) {            // Don't draw a frame around docked dock windows.            break;        }#endif        if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(option)) {            painter->save();            bool focus = (frame->state & State_Enabled) && (frame->state & State_HasFocus);            bool groupbox = element == PE_FrameGroupBox;            int lw = 1;            int mlw = 1;            // Don't show frames in tiny rects            if (lw + mlw > frame->rect.width() || lw + mlw > frame->rect.height())                break;            // Outer border, left side and top side            QColor color = focus ? highlightedDarkInnerBorderColor : borderColor;            painter->fillRect(QRect(frame->rect.left() + lw + mlw,frame->rect.top(),                                    frame->rect.width() - lw*2 - mlw*2,lw),color); // top line            painter->fillRect(QRect(frame->rect.left(), frame->rect.top() + lw + mlw,                                    lw, frame->rect.height() - lw*2 - mlw*2),color); // left line            // Line ends            QColor alphaLineEnds;            if (element == PE_FrameLineEdit && widget && widget->parent()) {                // Line edits use QPalette::Base as background role, so we use                // the parent's background role to calculate the alpha line                // end pixels.                alphaLineEnds = mergedColors(frame->palette.color(widget->parentWidget()->backgroundRole()), color);            } else {                alphaLineEnds = mergedColors(frame->palette.background().color(), color);            }            painter->fillRect(QRect(frame->rect.left() + lw, frame->rect.top(), mlw, lw),                              alphaLineEnds);            painter->fillRect(QRect(frame->rect.right() - lw - mlw + 1, frame->rect.top(), mlw, lw),                              alphaLineEnds);            painter->fillRect(QRect(frame->rect.left(),frame->rect.top() + lw, lw, mlw),                              alphaLineEnds);            painter->fillRect(QRect(frame->rect.left(), frame->rect.bottom() - lw - mlw + 1, lw, mlw),                              alphaLineEnds);            // Outer border, right side and bottom side            painter->fillRect(QRect(frame->rect.left() + lw + mlw, frame->rect.bottom() - lw + 1,                                    frame->rect.width() - lw*2 - mlw*2, lw), color); // bottom line            painter->fillRect(QRect(frame->rect.right() - lw + 1, frame->rect.top() + lw + mlw,                                    lw, frame->rect.height() - lw*2 - mlw*2), color); // right line            // Line ends            painter->fillRect(QRect(frame->rect.left() + lw, frame->rect.bottom() - lw + 1, mlw, lw),                              alphaLineEnds);            painter->fillRect(QRect(frame->rect.right() - lw - mlw + 1, frame->rect.bottom() - lw + 1, mlw, lw),                              alphaLineEnds);            painter->fillRect(QRect(frame->rect.right() - lw + 1, frame->rect.top() + lw, lw, mlw),                              alphaLineEnds);            painter->fillRect(QRect(frame->rect.right() - lw + 1, frame->rect.bottom() - lw - mlw + 1, lw, mlw),                              alphaLineEnds);            // Only show inner frame for raised and sunken states            if ((frame->state & State_Raised) || (frame->state & State_Sunken)) {                if (frame->state & State_Raised) {                    color = focus ? option->palette.highlight().color().light(101)                            : option->palette.button().color().light(101);                } else {                    if (focus) {                        color = mergedColors(option->palette.color(widget ? widget->backgroundRole() : QPalette::Base),                                             option->palette.highlight().color().dark(130), 10);                    } else {                        color = mergedColors(option->palette.color(widget ? widget->backgroundRole() : QPalette::Base),                                             borderColor, 30);                    }                }                // Inner border, top and left (just the line ends drawn for group boxes)                if (!groupbox) {                    painter->fillRect(QRect(frame->rect.left() + lw + mlw,frame->rect.top() + lw,                                            frame->rect.width() - lw*2 - mlw*2,mlw), color); // top line                    painter->fillRect(QRect(frame->rect.left() + lw, frame->rect.top() + lw + mlw,                                            mlw, frame->rect.height() - lw*2 - mlw*2),color); // left line                }                // Line ends                QColor lineEndColor = focus ? highlightedDarkInnerBorderColor : borderColor.dark(112);                painter->fillRect(QRect(frame->rect.left() + lw, frame->rect.top() + lw, mlw, mlw),                                  lineEndColor);                painter->fillRect(QRect(frame->rect.right() - lw - mlw + 1, frame->rect.top() + lw, mlw, mlw),                                  lineEndColor);                painter->fillRect(QRect(frame->rect.left() + lw, frame->rect.bottom() - lw - mlw + 1, mlw, mlw),                                  lineEndColor);                if (frame->state & State_Raised) {                    color = focus ? option->palette.highlight().color().dark(130)                            : option->palette.button().color().dark(130);                } else {                    if (focus) {                        color = mergedColors(option->palette.color(widget ? widget->backgroundRole() : QPalette::Base),                                             option->palette.highlight().color(), 10);                    } else {                        color = mergedColors(option->palette.color(widget ? widget->backgroundRole() : QPalette::Base),                                             borderColor, 80);                    }                }                // Inner border, bottom and right (just the line ends drawn for group boxes)                if (!groupbox) {                    painter->fillRect(QRect(frame->rect.left() + lw + mlw, frame->rect.bottom() - lw - mlw + 1,                                            frame->rect.width() - lw*2 - mlw*2, mlw), color);                    painter->fillRect(QRect(frame->rect.right() - lw - mlw + 1, frame->rect.top() + lw + mlw,                                            mlw, frame->rect.height() - lw*2 - mlw*2), color);                }                // Line ends                painter->fillRect(QRect(frame->rect.left() + lw, frame->rect.bottom() - lw - mlw + 1, mlw, mlw),                                  lineEndColor);                painter->fillRect(QRect(frame->rect.right() - lw - mlw + 1, frame->rect.bottom() - lw - mlw + 1, mlw, mlw),                                  lineEndColor);                painter->fillRect(QRect(frame->rect.right() - lw - mlw + 1, frame->rect.top() + lw, mlw, mlw),                                  lineEndColor);            } else {                // just draw the inner corners                painter->setPen(focus ? highlightedDarkInnerBorderColor : borderColor);                painter->drawPoint(frame->rect.left() + 1, frame->rect.top() + 1);                painter->drawPoint(frame->rect.right() - 1, frame->rect.top() + 1);                painter->drawPoint(frame->rect.left() + 1, frame->rect.bottom() - 1);                painter->drawPoint(frame->rect.right() - 1, frame->rect.bottom() - 1);            }            painter->restore();        }        break ;    case PE_FrameDockWidget:    case PE_FrameMenu:    case PE_FrameStatusBar: {        // Draws the frame around a popup menu.        QPen oldPen = painter->pen();        painter->setPen(borderColor);        painter->drawRect(option->rect.adjusted(0, 0, -1, -1));        painter->setPen(alphaCornerColor);        painter->drawPoint(option->rect.topLeft());        painter->drawPoint(option->rect.topRight());        painter->drawPoint(option->rect.bottomLeft());        painter->drawPoint(option->rect.bottomRight());        painter->setPen(oldPen);        break;    }#ifdef QT3_SUPPORT    case PE_Q3DockWindowSeparator: {        QPen oldPen = painter->pen();        painter->setPen(alphaCornerColor);        QRect rect = option->rect;        if (option->state & State_Horizontal) {            painter->drawLine(rect.right(), rect.top() + 2, rect.right(), rect.bottom() - 1);        } else {            painter->drawLine(rect.left() + 2, rect.bottom(), rect.right() - 1, rect.bottom());        }        painter->setPen(oldPen);        break;    }    case PE_Q3Separator: {        QPen oldPen = painter->pen();        painter->setPen(alphaCornerColor);        if ((option->state & State_Horizontal) == 0)            painter->drawLine(option->rect.bottomLeft(), option->rect.bottomRight());        else            painter->drawLine(option->rect.topRight(), option->rect.bottomRight());        painter->setPen(option->palette.background().color().light(104));        if ((option->state & State_Horizontal) == 0)            painter->drawLine(option->rect.topLeft(), option->rect.topRight());        else            painter->drawLine(option->rect.topLeft(), option->rect.bottomLeft());        painter->setPen(oldPen);        break;    }#endif // QT3_SUPPORT#ifndef QT_NO_MAINWINDOW    case PE_PanelMenuBar:        if (widget && qobject_cast<const QMainWindow *>(widget->parentWidget())#ifdef QT3_SUPPORT            || (widget->parentWidget() && widget->parentWidget()->inherits("Q3MainWindow"))#endif            ) {            // Draws the light line above and the dark line below menu bars and            // tool bars.            QPen oldPen = painter->pen();            if (element == PE_PanelMenuBar || (option->state & State_Horizontal)) {                painter->setPen(alphaCornerColor);                painter->drawLine(option->rect.left(), option->rect.bottom(),                                  option->rect.right(), option->rect.bottom());                painter->setPen(option->palette.background().color().light(104));                painter->drawLine(option->rect.left(), option->rect.top(),                                  option->rect.right(), option->rect.top());

⌨️ 快捷键说明

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