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

📄 qcleanlooksstyle.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                                    bool enabled, const QString& text, QPalette::ColorRole textRole) const    Draws the given \a text in the specified \a rectangle using the    provided \a painter and \a palette.    Text is drawn using the painter's pen. If an explicit \a textRole    is specified, then the text is drawn using the \a palette's color    for the specified role.  The \a enabled value indicates whether or    not the item is enabled; when reimplementing, this value should    influence how the item is drawn.    The text is aligned and wrapped according to the specified \a    alignment.    \sa Qt::Alignment*/void QCleanlooksStyle::drawItemText(QPainter *painter, const QRect &rect, int alignment, const QPalette &pal,                                    bool enabled, const QString& text, QPalette::ColorRole textRole) const{    if (text.isEmpty())        return;    QPen savedPen = painter->pen();    if (textRole != QPalette::NoRole) {        painter->setPen(QPen(pal.brush(textRole), savedPen.widthF()));    }    if (!enabled) {        QPen pen = painter->pen();        painter->setPen(pen);    }    painter->drawText(rect, alignment, text);    painter->setPen(savedPen);}static QColor mergedColors(const QColor &colorA, const QColor &colorB, int factor = 50){    const int maxFactor = 100;    QColor tmp = colorA;    tmp.setRed((tmp.red() * factor) / maxFactor + (colorB.red() * (maxFactor - factor)) / maxFactor);    tmp.setGreen((tmp.green() * factor) / maxFactor + (colorB.green() * (maxFactor - factor)) / maxFactor);    tmp.setBlue((tmp.blue() * factor) / maxFactor + (colorB.blue() * (maxFactor - factor)) / maxFactor);    return tmp;}/*!    \reimp*/void QCleanlooksStyle::drawPrimitive(PrimitiveElement elem,                        const QStyleOption *option,                        QPainter *painter, const QWidget *widget) const{    Q_ASSERT(option);    QRect rect = option->rect;    int state = option->state;    QColor button = option->palette.button().color();    QColor buttonShadow = option->palette.button().color().darker(110);    QColor buttonShadowAlpha = buttonShadow;    buttonShadowAlpha.setAlpha(128);    QColor darkOutline;    QColor dark;    darkOutline.setHsv(button.hue(),                CL_MIN(255, (int)(button.saturation()*3.0)),                CL_MIN(255, (int)(button.value()*0.6)));    dark.setHsv(button.hue(),                CL_MIN(255, (int)(button.saturation()*1.9)),                CL_MIN(255, (int)(button.value()*0.7)));    QColor tabFrameColor = mergedColors(option->palette.background().color(),                                                dark.lighter(135), 60);    switch(elem) {#ifndef QT_NO_TABBAR    case PE_FrameTabBarBase:        if (const QStyleOptionTabBarBase *tbb                = qstyleoption_cast<const QStyleOptionTabBarBase *>(option)) {            QRegion region(tbb->rect);            painter->save();            painter->setPen(QPen(darkOutline.lighter(110), 0));            switch (tbb->shape) {            case QTabBar::RoundedNorth:                region -= tbb->selectedTabRect;                painter->setClipRegion(region);                painter->drawLine(tbb->rect.topLeft(), tbb->rect.topRight());                break;            case QTabBar::RoundedWest:                region -= tbb->selectedTabRect;                painter->setClipRegion(region);                painter->drawLine(tbb->rect.left(), tbb->rect.top(), tbb->rect.left(), tbb->rect.bottom());                break;            case QTabBar::RoundedSouth:                region -= tbb->selectedTabRect;                painter->setClipRegion(region);                painter->drawLine(tbb->rect.left(), tbb->rect.bottom(),                            tbb->rect.right(), tbb->rect.bottom());                break;            case QTabBar::RoundedEast:                region -= tbb->selectedTabRect;                painter->setClipRegion(region);                painter->drawLine(tbb->rect.topRight(), tbb->rect.bottomRight());                break;            case QTabBar::TriangularNorth:            case QTabBar::TriangularEast:            case QTabBar::TriangularWest:            case QTabBar::TriangularSouth:                painter->restore();                QWindowsStyle::drawPrimitive(elem, option, painter, widget);                return;            }            painter->restore();        }        return;#endif // QT_NO_TABBAR    case PE_IndicatorViewItemCheck:        {            QStyleOptionButton button;            button.QStyleOption::operator=(*option);            button.state &= ~State_MouseOver;            drawPrimitive(PE_IndicatorCheckBox, &button, painter, widget);        }        return;    case PE_IndicatorHeaderArrow:        if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) {            QRect r = header->rect;            QImage arrow;            if (header->sortIndicator & QStyleOptionHeader::SortUp)                arrow = QImage(qt_cleanlooks_arrow_up_xpm);            else if (header->sortIndicator & QStyleOptionHeader::SortDown)                arrow = QImage(qt_cleanlooks_arrow_down_xpm);            if (!arrow.isNull()) {                r.setSize(arrow.size());                r.moveCenter(header->rect.center());                arrow.setColor(1, header->palette.foreground().color().rgba());                painter->drawImage(r, arrow);            }        }        break;    case PE_IndicatorButtonDropDown:        drawPrimitive(PE_PanelButtonCommand, option, painter, widget);        break;    case PE_IndicatorToolBarSeparator:        {            QRect rect = option->rect;            const int margin = 6;            if (option->state & State_Horizontal) {                const int offset = rect.width()/2;                painter->setPen(QPen(option->palette.background().color().darker(110)));                painter->drawLine(rect.bottomLeft().x() + offset,                            rect.bottomLeft().y() - margin,                            rect.topLeft().x() + offset,                            rect.topLeft().y() + margin);                painter->setPen(QPen(option->palette.background().color().lighter(110)));                painter->drawLine(rect.bottomLeft().x() + offset + 1,                            rect.bottomLeft().y() - margin,                            rect.topLeft().x() + offset + 1,                            rect.topLeft().y() + margin);            } else { //Draw vertical separator                const int offset = rect.height()/2;                painter->setPen(QPen(option->palette.background().color().darker(110)));                painter->drawLine(rect.topLeft().x() + margin ,                            rect.topLeft().y() + offset,                            rect.topRight().x() - margin,                            rect.topRight().y() + offset);                painter->setPen(QPen(option->palette.background().color().lighter(110)));                painter->drawLine(rect.topLeft().x() + margin ,                            rect.topLeft().y() + offset + 1,                            rect.topRight().x() - margin,                            rect.topRight().y() + offset + 1);            }        }        break;    case PE_Frame:        painter->save();        painter->setPen(dark.lighter(108));        painter->drawRect(option->rect.adjusted(0, 0, -1, -1));        painter->restore();        break;    case PE_FrameMenu:        painter->save();        {            painter->setPen(QPen(darkOutline, 1));            painter->drawRect(option->rect.adjusted(0, 0, -1, -1));            QColor frameLight = option->palette.background().color().lighter(160);            QColor frameShadow = option->palette.background().color().darker(110);            //paint beveleffect            QRect frame = option->rect.adjusted(1, 1, -1, -1);            painter->setPen(frameLight);            painter->drawLine(frame.topLeft(), frame.bottomLeft());            painter->drawLine(frame.topLeft(), frame.topRight());            painter->setPen(frameShadow);            painter->drawLine(frame.topRight(), frame.bottomRight());            painter->drawLine(frame.bottomLeft(), frame.bottomRight());        }        painter->restore();        break;    case PE_FrameDockWidget:        painter->save();        {            QColor softshadow = option->palette.background().color().darker(120);            QRect rect= option->rect;            painter->setPen(softshadow);            painter->drawRect(option->rect.adjusted(0, 0, -1, -1));            painter->setPen(QPen(option->palette.light(), 0));            painter->drawLine(QPoint(rect.left() + 1, rect.top() + 1), QPoint(rect.left() + 1, rect.bottom() - 1));            painter->setPen(QPen(option->palette.background().color().darker(120), 0));            painter->drawLine(QPoint(rect.left() + 1, rect.bottom() - 1), QPoint(rect.right() - 2, rect.bottom() - 1));            painter->drawLine(QPoint(rect.right() - 1, rect.top() + 1), QPoint(rect.right() - 1, rect.bottom() - 1));        }        painter->restore();        break;    case PE_PanelButtonTool:        painter->save();        if ((option->state & State_Enabled) || !(option->state & State_AutoRaise)) {            QRect rect = option->rect;            QPen oldPen = painter->pen();            if (widget && widget->inherits("QDockWidgetTitleButton")) {                   if (option->state & State_MouseOver)                       drawPrimitive(PE_PanelButtonCommand, option, painter, widget);            } else {                drawPrimitive(PE_PanelButtonCommand, option, painter, widget);            }        }        painter->restore();        break;    case PE_IndicatorDockWidgetResizeHandle:        {            QStyleOption dockWidgetHandle = *option;            bool horizontal = option->state & State_Horizontal;            if (horizontal)                dockWidgetHandle.state &= ~State_Horizontal;            else                dockWidgetHandle.state |= State_Horizontal;            drawControl(CE_Splitter, &dockWidgetHandle, painter, widget);        }        break;    case PE_FrameWindow:        painter->save();        {            QRect rect= option->rect;            painter->setPen(QPen(dark.darker(150), 0));            painter->drawRect(option->rect.adjusted(0, 0, -1, -1));            painter->setPen(QPen(option->palette.light(), 0));            painter->drawLine(QPoint(rect.left() + 1, rect.top() + 1),                              QPoint(rect.left() + 1, rect.bottom() - 1));            painter->setPen(QPen(option->palette.background().color().darker(120), 0));            painter->drawLine(QPoint(rect.left() + 1, rect.bottom() - 1),                              QPoint(rect.right() - 2, rect.bottom() - 1));            painter->drawLine(QPoint(rect.right() - 1, rect.top() + 1),                              QPoint(rect.right() - 1, rect.bottom() - 1));        }        painter->restore();        break;#ifndef QT_NO_LINEDIT    case PE_FrameLineEdit:        // fall through#endif // QT_NO_LINEEDIT#ifdef QT3_SUPPORT        if (widget && widget->inherits("Q3ToolBar")) {            drawPrimitive(PE_Q3Separator, option, painter, widget);            break;        }#endif        {            QPen oldPen = painter->pen();            if (option->state & State_Enabled) {                painter->setPen(QPen(option->palette.background(), 0));                painter->drawRect(rect.adjusted(0, 0, 0, 0));                painter->drawRect(rect.adjusted(1, 1, -1, -1));            } else {                painter->fillRect(rect, option->palette.background());            }            QRect r = rect.adjusted(0, 1, 0, -1);            painter->setPen(buttonShadowAlpha);            painter->drawLine(QPoint(r.left() + 2, r.top() - 1), QPoint(r.right() - 2, r.top() - 1));            painter->drawPoint(r.right() - 1, r.top());            painter->drawPoint(r.right(), r.top() + 1);            painter->drawPoint(r.right() - 1, r.bottom());            painter->drawPoint(r.right(), r.bottom() - 1);            painter->drawPoint(r.left() + 1, r.top() );            painter->drawPoint(r.left(), r.top() + 1);            painter->drawPoint(r.left() + 1, r.bottom() );            painter->drawPoint(r.left(), r.bottom() - 1);            painter->setPen(QPen(option->palette.background().color(), 1));            painter->drawLine(QPoint(r.left() + 2, r.top() + 1), QPoint(r.right() - 2, r.top() + 1));            if (option->state & State_HasFocus) {                QColor darkoutline = option->palette.highlight().color().darker(150);                QColor innerline = mergedColors(option->palette.highlight().color(), Qt::white);                painter->setPen(QPen(innerline, 0));                painter->drawRect(rect.adjusted(1, 2, -2, -3));                painter->setPen(QPen(darkoutline, 0));            }            else {                QColor highlight = Qt::white;                highlight.setAlpha(130);                painter->setPen(option->palette.base().color().darker(120));                painter->drawLine(QPoint(r.left() + 1, r.top() + 1),                                  QPoint(r.right() - 1, r.top() + 1));                painter->drawLine(QPoint(r.left() + 1, r.top() + 1),                                  QPoint(r.left() + 1, r.bottom() - 1));                painter->setPen(option->palette.base().color());                painter->drawLine(QPoint(r.right() - 1, r.top() + 1),                                  QPoint(r.right() - 1, r.bottom() - 1));                painter->setPen(highlight);                painter->drawLine(QPoint(r.left() + 1, r.bottom() + 1),                                  QPoint(r.right() - 1, r.bottom() + 1));                painter->drawPoint(QPoint(r.left(), r.bottom()));                painter->drawPoint(QPoint(r.right(), r.bottom() ));                painter->setPen(QPen(darkOutline.lighter(115), 1));            }            painter->drawLine(QPoint(r.left(), r.top() + 2), QPoint(r.left(), r.bottom() - 2));            painter->drawLine(QPoint(r.right(), r.top() + 2), QPoint(r.right(), r.bottom() - 2));            painter->drawLine(QPoint(r.left() + 2, r.bottom()), QPoint(r.right() - 2, r.bottom()));            painter->drawPoint(QPoint(r.right() - 1, r.bottom() - 1));            painter->drawPoint(QPoint(r.right() - 1, r.top() + 1));            painter->drawPoint(QPoint(r.left() + 1, r.bottom() - 1));            painter->drawPoint(QPoint(r.left() + 1, r.top() + 1));            painter->drawLine(QPoint(r.left() + 2, r.top()), QPoint(r.right() - 2, r.top()));            painter->setPen(oldPen);        }        break;    case PE_IndicatorCheckBox:        painter->save();        if (const QStyleOptionButton *checkbox = qstyleoption_cast<const QStyleOptionButton*>(option)) {            QRect checkRect;            checkRect.setX(rect.left() );            checkRect.setY(rect.top() );            checkRect.setWidth(rect.width() - 1);            checkRect.setHeight(rect.height() - 1);            if (state & State_Sunken)                painter->setBrush(dark.lighter(130));            else                painter->setBrush(option->palette.base());

⌨️ 快捷键说明

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