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