void PaintedSlider::paintEvent(WPaintDevice *paintDevice) { if (slider_->tickPosition()) { WPainter painter(paintDevice); int w, h; if (slider_->orientation() == Horizontal) { w = (int)width().toPixels(); h = (int)height().toPixels(); } else { w = (int)height().toPixels(); h = (int)width().toPixels(); painter.translate(0, w); painter.rotate(-90); } int tickInterval = slider_->tickInterval(); int r = range(); if (tickInterval == 0) tickInterval = r / 2; double tickStep = ((double)w - (HANDLE_WIDTH - 10)) / (r / tickInterval); if (tickStep <= 0) return; WPen pen; pen.setColor(WColor(0xd7, 0xd7, 0xd7)); pen.setCapStyle(FlatCap); pen.setWidth(1); painter.setPen(pen); int y1 = h / 4; int y2 = h / 2 - 4; int y3 = h / 2 + 4; int y4 = h - h/4; for (unsigned i = 0; ; ++i) { int x = (HANDLE_WIDTH - 10)/2 + (int) (i * tickStep); if (x > w - (HANDLE_WIDTH - 10)/2) break; if (slider_->tickPosition() & WSlider::TicksAbove) painter.drawLine(x + 0.5, y1, x + 0.5, y2); if (slider_->tickPosition() & WSlider::TicksBelow) painter.drawLine(x + 0.5, y3, x + 0.5, y4); } } }