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

📄 arthurstyle.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
            bottom.setWidth(r.width() - bottomLeft.width() - bottomRight.width());            bottom.setHeight(bottomLeft.height());            painter->drawTiledPixmap(bottom, bottomStretch);            painter->restore();        }        break;    default:        QWindowsStyle::drawPrimitive(element, option, painter, widget);        break;    }    return;}void ArthurStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *option,                                     QPainter *painter, const QWidget *widget) const{    switch (control) {    case CC_Slider:        if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {            QRect groove = subControlRect(CC_Slider, option, SC_SliderGroove, widget);            QRect handle = subControlRect(CC_Slider, option, SC_SliderHandle, widget);            painter->save();            bool hover = (slider->state & State_Enabled) && (slider->state & State_MouseOver);            if (hover) {                QRect moderated = widget->rect().adjusted(0, 4, 0, -4);                drawHoverRect(painter, moderated);            }            if ((option->subControls & SC_SliderGroove) && groove.isValid()) {                QPixmap grv = cached(":res/images/slider_bar.png");                painter->drawPixmap(QRect(groove.x() + 5, groove.y(),                                          groove.width() - 10, grv.height()),                                    grv);            }            if ((option->subControls & SC_SliderHandle) && handle.isValid()) {                QPixmap hndl = cached(":res/images/slider_thumb_on.png");                painter->drawPixmap(handle.topLeft(), hndl);            }            painter->restore();        }        break;    case CC_GroupBox:        if (const QStyleOptionGroupBox *groupBox                = qstyleoption_cast<const QStyleOptionGroupBox *>(option)) {            QStyleOptionGroupBox groupBoxCopy(*groupBox);            groupBoxCopy.subControls &= ~SC_GroupBoxLabel;            QWindowsStyle::drawComplexControl(control, &groupBoxCopy, painter, widget);            if (groupBox->subControls & SC_GroupBoxLabel) {                const QRect &r = groupBox->rect;                QPixmap titleLeft = cached(":res/images/title_cap_left.png");                QPixmap titleRight = cached(":res/images/title_cap_right.png");                QPixmap titleStretch = cached(":res/images/title_stretch.png");                int txt_width = groupBox->fontMetrics.width(groupBox->text) + 20;                painter->drawPixmap(r.center().x() - txt_width/2, 0, titleLeft);                QRect tileRect = subControlRect(control, groupBox, SC_GroupBoxLabel, widget);                painter->drawTiledPixmap(tileRect, titleStretch);                painter->drawPixmap(tileRect.x() + tileRect.width(), 0, titleRight);                int opacity = 31;                painter->setPen(QColor(0, 0, 0, opacity));                painter->drawText(tileRect.translated(0, 1),                                  Qt::AlignVCenter | Qt::AlignHCenter, groupBox->text);                painter->drawText(tileRect.translated(2, 1),                                  Qt::AlignVCenter | Qt::AlignHCenter, groupBox->text);                painter->setPen(QColor(0, 0, 0, opacity * 2));                painter->drawText(tileRect.translated(1, 1),                                  Qt::AlignVCenter | Qt::AlignHCenter, groupBox->text);                painter->setPen(Qt::white);                painter->drawText(tileRect, Qt::AlignVCenter | Qt::AlignHCenter, groupBox->text);            }        }        break;    default:        QWindowsStyle::drawComplexControl(control, option, painter, widget);        break;    }    return;}QRect ArthurStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option,                                  SubControl subControl, const QWidget *widget) const{    QRect rect;    switch (control) {    default:        rect = QWindowsStyle::subControlRect(control, option, subControl, widget);        break;    case CC_GroupBox:        if (const QStyleOptionGroupBox *group                = qstyleoption_cast<const QStyleOptionGroupBox *>(option)) {            switch (subControl) {            default:                rect = QWindowsStyle::subControlRect(control, option, subControl, widget);                break;            case SC_GroupBoxContents:                rect = QWindowsStyle::subControlRect(control, option, subControl, widget);                rect.adjust(0, -8, 0, 0);                break;            case SC_GroupBoxFrame:                rect = group->rect;                break;            case SC_GroupBoxLabel:                QPixmap titleLeft = cached(":res/images/title_cap_left.png");                QPixmap titleRight = cached(":res/images/title_cap_right.png");                QPixmap titleStretch = cached(":res/images/title_stretch.png");                int txt_width = group->fontMetrics.width(group->text) + 20;                rect = QRect(group->rect.center().x() - txt_width/2 + titleLeft.width(), 0,                             txt_width - titleLeft.width() - titleRight.width(),                             titleStretch.height());                break;            }        }        break;    }    if (control == CC_Slider && subControl == SC_SliderHandle) {        rect.setWidth(13);        rect.setHeight(27);    } else if (control == CC_Slider && subControl == SC_SliderGroove) {        rect.setHeight(9);        rect.moveTop(27/2 - 9/2);    }    return rect;}QSize ArthurStyle::sizeFromContents(ContentsType type, const QStyleOption *option,                                    const QSize &size, const QWidget *widget) const{    QSize newSize = QWindowsStyle::sizeFromContents(type, option, size, widget);    switch (type) {    case CT_RadioButton:        newSize += QSize(20, 0);        break;    case CT_PushButton:        newSize.setHeight(26);        break;    case CT_Slider:        newSize.setHeight(27);        break;    default:        break;    }    return newSize;}int ArthurStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QWidget *widget) const{    if (pm == PM_SliderLength)        return 13;    return QWindowsStyle::pixelMetric(pm, opt, widget);}void ArthurStyle::polish(QWidget *widget){    if (widget->layout() && qobject_cast<QGroupBox *>(widget)) {        if (qFindChildren<QGroupBox *>(widget).size() == 0) {            widget->layout()->setSpacing(0);            widget->layout()->setMargin(12);        } else {            widget->layout()->setMargin(13);        }    }    if (qobject_cast<QPushButton *>(widget)        || qobject_cast<QRadioButton *>(widget)        || qobject_cast<QSlider *>(widget)) {        widget->setAttribute(Qt::WA_Hover);    }    QPalette pal = widget->palette();    if (widget->isWindow()) {        pal.setColor(QPalette::Background, QColor(241, 241, 241));        widget->setPalette(pal);    }}void ArthurStyle::unpolish(QWidget *widget){    if (qobject_cast<QPushButton *>(widget)        || qobject_cast<QRadioButton *>(widget)        || qobject_cast<QSlider *>(widget)) {        widget->setAttribute(Qt::WA_Hover, false);    }}void ArthurStyle::polish(QPalette &palette){    palette.setColor(QPalette::Background, QColor(241, 241, 241));}QRect ArthurStyle::subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const{    QRect r;    switch(element) {    case SE_RadioButtonClickRect:        r = widget->rect();        break;    case SE_RadioButtonContents:        r = widget->rect().adjusted(20, 0, 0, 0);        break;    default:        r = QWindowsStyle::subElementRect(element, option, widget);        break;    }    if (qobject_cast<const QRadioButton*>(widget))        r = r.adjusted(5, 0, -5, 0);    return r;}

⌨️ 快捷键说明

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