📄 qcleanlooksstyle.cpp
字号:
painter->drawLine(innerRightLine); painter->drawLine(innerBottomLine); painter->setPen(alphaCornerColor); painter->drawPoint(leftBottomInnerCorner1); painter->drawPoint(leftBottomInnerCorner2); painter->drawPoint(rightBottomInnerCorner1); painter->drawPoint(rightBottomInnerCorner2); painter->drawPoint(leftTopInnerCorner1); painter->drawPoint(leftTopInnerCorner2); }#endif // QT_NO_TABWIDGET painter->restore(); break ; case PE_FrameStatusBar: break;#endif // QT_NO_TABBAR default: QWindowsStyle::drawPrimitive(elem, option, painter, widget); break; }}/*! \reimp*/void QCleanlooksStyle::drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const{ QColor button = option->palette.button().color(); QColor dark; dark.setHsv(button.hue(), CL_MIN(255, (int)(button.saturation()*1.9)), CL_MIN(255, (int)(button.value()*0.7))); QColor darkOutline; darkOutline.setHsv(button.hue(), CL_MIN(255, (int)(button.saturation()*2.0)), CL_MIN(255, (int)(button.value()*0.6))); QRect rect = option->rect; QColor shadow = mergedColors(option->palette.background().color().darker(120), dark.lighter(130), 60); QColor tabFrameColor = mergedColors(option->palette.background().color(), dark.lighter(135), 60); QColor highlight = option->palette.highlight().color(); QColor highlightText = option->palette.highlightedText().color(); switch(element) { case CE_RadioButton: //fall through case CE_CheckBox: if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) { bool hover = (btn->state & State_MouseOver && btn->state & State_Enabled); if (hover) painter->fillRect(rect, btn->palette.background().color().lighter(104)); QStyleOptionButton copy = *btn; copy.rect.adjust(2, 0, -2, 0); QWindowsStyle::drawControl(element, ©, painter, widget); } break; case CE_Splitter: painter->save(); { // hover appearance QBrush fillColor = option->palette.background().color(); if (option->state & State_MouseOver && option->state & State_Enabled) fillColor = fillColor.color().lighter(106); painter->fillRect(option->rect, fillColor); QColor grooveColor = mergedColors(dark.lighter(110), option->palette.button().color(),40); QColor gripShadow = grooveColor.darker(110); QPalette palette = option->palette; bool vertical = !(option->state & State_Horizontal); QRect scrollBarSlider = option->rect; int gripMargin = 4; //draw grips if (vertical) { for( int i = -20; i< 20 ; i += 2) { painter->setPen(QPen(gripShadow, 1)); painter->drawLine( QPoint(scrollBarSlider.center().x() + i , scrollBarSlider.top() + gripMargin), QPoint(scrollBarSlider.center().x() + i, scrollBarSlider.bottom() - gripMargin)); painter->setPen(QPen(palette.light(), 1)); painter->drawLine( QPoint(scrollBarSlider.center().x() + i + 1, scrollBarSlider.top() + gripMargin ), QPoint(scrollBarSlider.center().x() + i + 1, scrollBarSlider.bottom() - gripMargin)); } } else { for (int i = -20; i < 20 ; i += 2) { painter->setPen(QPen(gripShadow, 1)); painter->drawLine( QPoint(scrollBarSlider.left() + gripMargin , scrollBarSlider.center().y()+ i), QPoint(scrollBarSlider.right() - gripMargin, scrollBarSlider.center().y()+ i)); painter->setPen(QPen(palette.light(), 1)); painter->drawLine( QPoint(scrollBarSlider.left() + gripMargin, scrollBarSlider.center().y() + 1 + i), QPoint(scrollBarSlider.right() - gripMargin, scrollBarSlider.center().y() + 1 + i)); } } } painter->restore(); break;#ifndef QT_NO_SIZEGRIP case CE_SizeGrip: painter->save(); { int x, y, w, h; option->rect.getRect(&x, &y, &w, &h); int sw = qMin(h, w); if (h > w) painter->translate(0, h - w); else painter->translate(w - h, 0); int sx = x; int sy = y; int s = 4; if (option->direction == Qt::RightToLeft) { sx = x + sw; for (int i = 0; i < 4; ++i) { painter->setPen(QPen(option->palette.light().color(), 1)); painter->drawLine(x, sy - 1 , sx + 1, sw); painter->setPen(QPen(dark.lighter(120), 1)); painter->drawLine(x, sy, sx, sw); sx -= s; sy += s; } } else { for (int i = 0; i < 4; ++i) { painter->setPen(QPen(option->palette.light().color(), 1)); painter->drawLine(sx - 1, sw, sw, sy - 1); painter->setPen(QPen(dark.lighter(120), 1)); painter->drawLine(sx, sw, sw, sy); sx += s; sy += s; } } } painter->restore(); break;#endif // QT_NO_SIZEGRIP#ifndef QT_NO_TOOLBAR case CE_ToolBar: painter->save(); if (const QStyleOptionToolBar *toolbar = qstyleoption_cast<const QStyleOptionToolBar *>(option)) { QRect rect = option->rect; bool paintLeftBorder = true; bool paintRightBorder = true; bool paintBottomBorder = true; switch (toolbar->toolBarArea) { case Qt::BottomToolBarArea: switch(toolbar->positionOfLine) { case QStyleOptionToolBar::Beginning: case QStyleOptionToolBar::OnlyOne: paintBottomBorder = false; default: break; } case Qt::TopToolBarArea: switch (toolbar->positionWithinLine) { case QStyleOptionToolBar::Beginning: paintLeftBorder = false; break; case QStyleOptionToolBar::End: paintRightBorder = false; break; case QStyleOptionToolBar::OnlyOne: paintRightBorder = false; paintLeftBorder = false; default: break; } if (QApplication::layoutDirection() == Qt::RightToLeft) { //reverse layout changes the order of Beginning/end bool tmp = paintLeftBorder; paintRightBorder=paintLeftBorder; paintLeftBorder=tmp; } break; case Qt::RightToolBarArea: switch (toolbar->positionOfLine) { case QStyleOptionToolBar::Beginning: case QStyleOptionToolBar::OnlyOne: paintRightBorder = false; break; default: break; } break; case Qt::LeftToolBarArea: switch (toolbar->positionOfLine) { case QStyleOptionToolBar::Beginning: case QStyleOptionToolBar::OnlyOne: paintLeftBorder = false; break; default: break; } break; default: break; } QColor light = option->palette.background().color().lighter(110); //draw top border painter->setPen(QPen(light)); painter->drawLine(rect.topLeft().x(), rect.topLeft().y(), rect.topRight().x(), rect.topRight().y()); if (paintLeftBorder) { painter->setPen(QPen(light)); painter->drawLine(rect.topLeft().x(), rect.topLeft().y(), rect.bottomLeft().x(), rect.bottomLeft().y()); } if (paintRightBorder) { painter->setPen(QPen(shadow)); painter->drawLine(rect.topRight().x(), rect.topRight().y(), rect.bottomRight().x(), rect.bottomRight().y()); } if (paintBottomBorder) { painter->setPen(QPen(shadow)); painter->drawLine(rect.bottomLeft().x(), rect.bottomLeft().y(), rect.bottomRight().x(), rect.bottomRight().y()); } } painter->restore(); break;#endif // QT_NO_TOOLBAR#ifndef QT_NO_DOCKWIDGET case CE_DockWidgetTitle: painter->save(); if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(option)) { const QStyleOptionDockWidgetV2 *v2 = qstyleoption_cast<const QStyleOptionDockWidgetV2*>(dwOpt); bool verticalTitleBar = v2 == 0 ? false : v2->verticalTitleBar; QRect rect = dwOpt->rect; QRect titleRect = subElementRect(SE_DockWidgetTitleBarText, option, widget); QRect r = rect.adjusted(0, 0, -1, 0); if (verticalTitleBar) r.adjust(0, 0, 0, -1); painter->setPen(option->palette.light().color()); painter->drawRect(r.adjusted(1, 1, 1, 1)); painter->setPen(shadow); painter->drawRect(r); if (verticalTitleBar) { QRect r = rect; QSize s = r.size(); s.transpose(); r.setSize(s); titleRect = QRect(r.left() + rect.bottom() - titleRect.bottom(), r.top() + titleRect.left() - rect.left(), titleRect.height(), titleRect.width()); painter->translate(r.left(), r.top() + r.width()); painter->rotate(-90); painter->translate(-r.left(), -r.top()); rect = r; } if (!dwOpt->title.isEmpty()) { QString titleText = painter->fontMetrics().elidedText(dwOpt->title, Qt::ElideRight, titleRect.width()); drawItemText(painter, titleRect, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic, dwOpt->palette, dwOpt->state & State_Enabled, titleText, QPalette::WindowText); } } painter->restore(); break;#endif // QT_NO_DOCKWIDGET case CE_HeaderSection: painter->save(); // Draws the header in tables. if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) { QPixmap cache; QString pixmapName = uniqueName(QLatin1String("headersection"), option, option->rect.size()); pixmapName += QLatin1String("-") + QString::number(int(header->position)); pixmapName += QLatin1String("-") + QString::number(int(header->orientation)); QRect r = option->rect; QColor gradientStopColor; QColor gradientStartColor = option->palette.button().color(); gradientStopColor.setHsv(gradientStartColor.hue(), CL_MIN(255, (int)(gradientStartColor.saturation()*2)), CL_MIN(255, (int)(gradientStartColor.value()*0.96))); QLinearGradient gradient(rect.topLeft(), rect.bottomLeft()); if (option->palette.background().gradient()) { gradient.setStops(option->palette.background().gradient()->stops()); } else { gradient.setColorAt(0, gradientStartColor); gradient.setColorAt(0.8, gradientStartColor); gradient.setColorAt(1, gradientStopColor); } painter->fillRect(r, gradient); if (!UsePixmapCache || !QPixmapCache::find(pixmapName, cache)) { cache = QPixmap(r.size()); cache.fill(Qt::transparent); QRect pixmapRect(0, 0, r.width(), r.height()); QPainter cachePainter(&cache); if (header->orientation == Qt::Vertical) { cachePainter.setPen(QPen(dark)); cachePainter.drawLine(pixmapRect.topRight(), pixmapRect.bottomRight()); if (header->position != QStyleOptionHeader::End) { cachePainter.setPen(QPen(shadow)); cachePa
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -