40 QStyleOptionButton buttonStyle;
41 buttonStyle.initFrom(
this);
42 QRect area = this->style()->subElementRect(QStyle::SE_PushButtonFocusRect, &buttonStyle);
44 int totalWidth = area.width();
46 QStylePainter painter(
this);
48 painter.setPen(Qt::transparent);
49 if (style()->objectName() ==
"breeze") {
50 painter.drawPrimitive(QStyle::PE_PanelButtonCommand, buttonStyle);
52 painter.drawPrimitive(QStyle::PE_Frame, buttonStyle);
55 QColor HL = this->
palette().highlight().color();
56 QColor mid = QColor(220, 220, 0);
57 QColor warn = QColor(220, 0, 0);
58 if (ratioCur>=0.2 && ratioCur<0.4) {
59 qreal newRatio = (ratioCur-0.2)/0.2;
60 qreal negRatio = 1-newRatio;
61 HL.setRed( qMax(0, qMin(
int(HL.red()*negRatio) +
int(mid.red()*newRatio), 255)));
62 HL.setGreen( qMax(0, qMin(
int(HL.green()*negRatio) +
int(mid.green()*newRatio), 255)));
63 HL.setBlue( qMax(0, qMin(
int(HL.blue()*negRatio) +
int(mid.blue()*newRatio), 255)));
65 else if (ratioCur>=0.4 && ratioCur<0.8) {
66 qreal newRatio = (ratioCur-0.4)/0.4;
67 qreal negRatio = 1-newRatio;
68 HL.setRed( qMax(0, qMin(
int(mid.red()*negRatio) +
int(warn.red()*newRatio), 255)));
69 HL.setGreen( qMax(0, qMin(
int(mid.green()*negRatio) +
int(warn.green()*newRatio), 255)));
70 HL.setBlue( qMax(0, qMin(
int(mid.blue()*negRatio) +
int(warn.blue()*newRatio), 255)));
72 else if (ratioCur>0.8) {
77 QRect currentBytes = area;
78 currentBytes.setWidth(
int(ratioCur*totalWidth));
79 painter.setOpacity(0.5);
81 painter.drawRoundedRect(currentBytes, 2, 2);
84 QRect imageSize = area;
87 painter.setOpacity(1.0);
88 painter.drawRoundedRect(imageSize, 2, 2);
91 QPushButton::paintEvent(e);