void DoubleSlider::paintEvent(QPaintEvent* event) { event->accept(); int leftMarker = tgt::iround(minValue_ * (width()-leftOffset_-rightOffset_) + leftOffset_); int rightMarker = tgt::iround(maxValue_ * (width()-leftOffset_-rightOffset_) + leftOffset_); QPoint leftSlider[5] = { QPoint(leftMarker - sliderWidth_, static_cast<int>(0.3f * height())), QPoint(leftMarker - sliderWidth_, height()), QPoint(leftMarker + sliderWidth_, height()), QPoint(leftMarker + sliderWidth_, static_cast<int>(0.3f * height())), QPoint(leftMarker, 0) }; QPoint rightSlider[5] = { QPoint(rightMarker - sliderWidth_, static_cast<int>(0.3f * height())), QPoint(rightMarker - sliderWidth_, height()), QPoint(rightMarker + sliderWidth_, height()), QPoint(rightMarker + sliderWidth_, static_cast<int>(0.3f * height())), QPoint(rightMarker, 0) }; QColor sliderColor(255, 255, 255); QColor sliderDarkColor(75, 130, 89); QColor lineColor(75, 130, 89); QPainter paint(this); paint.setRenderHint(QPainter::Antialiasing); //draw horizontal line paint.setPen(lineColor); paint.drawLine(leftOffset_, height()/2, width()-rightOffset_, height()/2); //draw left marker paint.setBrush(sliderColor); paint.setPen(sliderDarkColor); paint.save(); paint.drawConvexPolygon(leftSlider, 5); paint.restore(); //draw right marker paint.save(); paint.drawConvexPolygon(rightSlider, 5); paint.restore(); }
void ScrollBar::paintEvent(QPaintEvent *event) { Q_UNUSED(event) Q_D(ScrollBar); QPainter painter(this); painter.fillRect(rect(), palette().color(QPalette::Window)); int x, y, w, h; rect().getRect(&x, &y, &w, &h); QMargins margins(2, 2, 2, 2); QBrush brush; brush.setStyle(Qt::SolidPattern); brush.setColor(backgroundColor()); painter.setBrush(brush); painter.setPen(Qt::NoPen); if (d->hideOnMouseOut) { painter.setOpacity(d->machine->opacity()); } painter.drawRect(rect().marginsRemoved(margins)); const qreal q = h / static_cast<qreal>(maximum() - minimum() + pageStep()); QRect handle = Qt::Horizontal == orientation() ? QRect(sliderPosition()*q, y, pageStep()*q, h) : QRect(x, sliderPosition()*q, w, pageStep()*q); brush.setColor(sliderColor()); painter.setBrush(brush); painter.drawRect(handle.marginsRemoved(margins)); }
// Color Action ThymioColorAction::ThymioColorAction( QGraphicsItem *parent ) : ThymioButton(false, 1.0, true, false, parent) { setData(0, "action"); setData(1, "color"); QTransform transMatrix(1.0,0.0,0.0,0.0,2.0,0.0,0.0,0.0,1.0); QString sliderColor("FF0000"); for(int i=0; i<3; i++) { if( i == 1 ) sliderColor="00FF00"; else if( i == 2 ) sliderColor="0000FF"; QSlider *s = new QSlider(Qt::Horizontal); s->setRange(0,32); s->setStyleSheet(QString("QSlider::groove:horizontal { height: 14px; border: 2px solid #000000; " "background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 #000000, stop:1 #%0); }" "QSlider::handle:horizontal { " "background: #FFFFFF; " "border: 5px solid #000000; width: 18px; margin: -2px 0; }").arg(sliderColor)); s->setSliderPosition(0); QGraphicsProxyWidget *w = new QGraphicsProxyWidget(this); w->setWidget(s); w->setPos(27, 70+i*60); w->setTransform(transMatrix); sliders.push_back(s); widgets.push_back(w); connect(s, SIGNAL(valueChanged(int)), this, SLOT(valueChangeDetected())); connect(s, SIGNAL(valueChanged(int)), this, SLOT(updateIRButton())); } }